public UserDetailPage(DataUser binding, AccountGroup issuer) { InitializeComponent(); this.issuer = issuer; IssuerView.BindingContext = issuer.User; IssuerView.Update(); UpdateBinding(binding); IssuerGroupView.GestureRecognizers.Add(new TapGestureRecognizer() { Command = new Command(async() => { try { var account = await Util.SelectAccount("전환할 계정을 선택하세요"); this.issuer = account; IssuerView.BindingContext = this.issuer.User; IssuerView.Update(); UpdateRelationship(); } catch (Exception e) { Util.HandleException(e); } }) }); }
public void Update() { if (BindingContext is DataStatus) { } else { return; } var status = BindingContext as DataStatus; var display = DisplayStatus; if (display != status && !NeedToPreventDisplay) { HeaderView.IsVisible = true; HeaderLabel.Text = string.Format("{0} 님이 리트윗 하셨습니다", status.Creater.NickName); } else { HeaderView.IsVisible = false; } ClearImage(); LockImage.IsVisible = display.Creater.IsProtected; CreatedAtLabel.Text = display.CreatedAt.ToLocalTime().ToString(); if (NeedToPreventDisplay) { NameLabel.Text = "이 유저는 보호된 유저입니다"; TextLabel.Text = "이 트윗은 보호된 유저의 트윗입니다"; MediaGrid.IsVisible = false; return; } NameLabel.Text = string.Format("{0} @{1}", display.Creater.NickName, display.Creater.ScreenName); TextLabel.FormattedText = TwitterFormater.ParseFormattedString(display); if (display.ExtendMedias != null) { MediaGrid.IsVisible = true; } else { MediaGrid.IsVisible = false; } IssuerView.BindingContext = status.Issuer; IssuerView.Update(); UpdateImage(); UpdateButton(); if (quoteView != null) { if (display.QuotedStatus != null) { quoteView.BindingContext = display.QuotedStatus; quoteView.Update(); QuoteViewFrame.IsVisible = true; } else { quoteView.ClearImage(); QuoteViewFrame.IsVisible = false; } } if (display.Polls != null) { var poll = display.Polls[0]; PollGroupView.IsVisible = true; for (int i = 0; i < poll.Options.Length; i++) { pollViews[i].Update(poll, i); PollsView.Children.Add(pollViews[i]); } if (poll.EndDateTime < DateTime.UtcNow) { var leftTime = poll.EndDateTime - DateTime.UtcNow; PollStatusLabel.Text = string.Format("{0}표 • 투표가 끝났습니다", poll.TotalCount); } else { var leftTime = poll.EndDateTime - DateTime.UtcNow; PollStatusLabel.Text = string.Format("{0}표 • {1} 남았습니다.", poll.TotalCount, Util.TimespanToString(leftTime)); } } else { PollsView.Children.Clear(); PollGroupView.IsVisible = false; } }