Beispiel #1
0
        /// <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);
            }
        }