/// <summary> /// Delegate용 함수, 인용&대화 트윗을 불러와서 추가 할 때 사용 /// </summary> /// <param name="tweet">인용&대화 트윗</param> /// <param name="parent">부모 트윗, 인용일 경우 인용이 오고 아닐 경우 상위 트윗이 옴</param> /// <param name="isDeahwa">대화인지 인용인지, true: 대화 / false: 인용</param> public void AddSingleTweet(ClientTweet tweet, UIProperty parent, bool isQT) { //부모 연결, 인용 트윗 설정 tweet.uiProperty.parentTweet = parent == null ? this : parent; tweet.uiProperty.isQtTweet = isQT; if (parent == null) //TL에 보이는 최상위 트윗에서 호출 { AddTweet(tweet); } else //하위 트윗에서 호출, 인용 혹은 대화에서 호출 시 { parent.AddTweet(tweet); } }
/// <summary> /// ListBox에 바인딩 시킨 Source에 변화가 있을 경우 호출 되는 이벤트 /// sender.status가 Generated일 때 ListBoxItem이 생성되어 있어 높이를 구할 수 있다 /// </summary> //private void ItemContainerGenerator_StatusChanged(object sender, EventArgs e) //{ // ItemContainerGenerator icGene = sender as ItemContainerGenerator; // if (icGene.Status != GeneratorStatus.ContainersGenerated && isAddedTweet == false) // return; // if (listTweet == null) return; // if (listTweet.Count <= 20) return; // var v = icGene.GenerateBatches(); // //TreeViewItem firstItem = treeView.ItemContainerGenerator.ContainerFromIndex(0) as TreeViewItem; // TreeViewItem firstItem = GetTreeViewItem(treeView, listTweet[0], 0); // //TreeViewItem item = GetTreeViewItem(treeView, ) // if (_scrollViewer == null || firstItem == null) return; // firstItem.Loaded += TreeViewItem_Loaded; //} /// <summary> /// 트리뷰아이템이 실제 로드 되고 최종으로 불리는 이벤트 /// 트리뷰아이템 추가 시 스크롤 이동과 배경 설정을 한다 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> //private void TreeViewItem_Loaded(object sender, RoutedEventArgs e) //{ // TreeViewItem treeViewItem = sender as TreeViewItem; // if (treeViewItem == null) return; // LoadEndAfterScroll(treeViewItem); // LoadEndAfterBackground(treeViewItem); // isAddedTweet = false; //} /// <summary> /// 트리뷰아이템 로드 후 스크롤 고정 관련 작업 /// </summary> /// <param name="item">로드 된 트리뷰아이템</param> //private void LoadEndAfterScroll(TreeViewItem item) //{ // item.Loaded -= TreeViewItem_Loaded; // if (_scrollViewer.ContentVerticalOffset != 0.0 && isAddedTweet) // { // _scrollViewer.ScrollToVerticalOffset(_scrollViewer.ContentVerticalOffset + item.DesiredSize.Height); // } //} /// <summary> /// 트리뷰 아이템 로드 후 배경 설정 /// </summary> /// <param name="item">로드 된 트리뷰 아이템</param> //private void LoadEndAfterBackground(TreeViewItem item) //{ // if (item.DataContext is ClientTweet) // SetBackgroundTweet(item); // else // SetBackgroundDM(item); //} /// <summary> /// 트리뷰 아이템이 트윗일 경우 배경 설정 /// </summary> /// <param name="item">배경 설정 할 트리뷰 아이템</param> private void SetBackgroundTweet(object sender, RoutedEventArgs e) { TreeViewItem item = sender as TreeViewItem; item.Loaded -= SetBackgroundTweet; UIProperty uiProperty = null; if (item.DataContext is ClientTweet) { uiProperty = ((ClientTweet)item.DataContext).uiProperty; } else if (item.DataContext is ClientDirectMessage) { uiProperty = ((ClientDirectMessage)item.DataContext).uiProperty; } if (uiProperty == null) { return; } if (uiProperty.isBackOne) { Binding myBinding = new Binding(); myBinding.Source = DataManager.DataInstence.skin; myBinding.Path = new PropertyPath("blockOne"); myBinding.Mode = BindingMode.OneWay; myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; BindingOperations.SetBinding(item, Control.BackgroundProperty, myBinding); } else { Binding myBinding = new Binding(); myBinding.Source = DataManager.DataInstence.skin; myBinding.Path = new PropertyPath("blockTwo"); myBinding.Mode = BindingMode.OneWay; myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; BindingOperations.SetBinding(item, Control.BackgroundProperty, myBinding); } }