Example #1
0
        public void SelectParentItem(ITreeViewItem NodeItem)
        {
            TreeViewItem TVI = SearchTVIRecursive((TreeViewItem)Tree.Items[0], NodeItem);

            if (TVI != null)
            {
                if (TVI.Equals((TreeViewItem)Tree.Items[0]) == false)
                {
                    TreeViewItem parent = (TreeViewItem)TVI.Parent;
                    parent.Focus();
                }
                else
                {
                    TVI.Focus();
                }
            }
        }
        private void mergeNode_Selected(object sender, RoutedEventArgs e)
        {
            try
            {
                if (_lastNode != null && _lastNode.Equals(e.Source as TreeViewItem))
                {
                    return;
                }


                var node = e.Source as TreeViewItem;
                if (node == null)
                {
                    _lastNode = null;
                    ClearTablePage();
                    return;
                }

                var merge = node.Tag as MergeDescriptor.Merge;

                if (merge == null)
                {
                    _lastNode = null;
                    ClearTablePage();
                    return;
                }
                God.Merge            = merge;
                God.CurrentMergeData = merge.Data;
                God.DataTableChanged.Invoke();

                _lastNode = node;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error selecting node in tree: " + ex.Message);
            }
        }
Example #3
0
        /// <summary>
        /// 拖拽item处理,设置各种鼠标操作状态和TreeViewItem显示状态
        /// </summary>
        private void MouseDragDeal(TreeViewItem tvi)
        {
            if (tvi != null && tvi.IsMouseOver)
            {
                var objRow = tvi.DataContext;
                if (objRow == null)
                {
                    return;
                }

                if (IsCanMove(_selectedItem, objRow) == false)
                {
                    Mouse.SetCursor(Cursors.No);
                }

                //为目标TreeViewItem添加装饰控件
                AddAdorner(tvi);
                if (_tempTreeViewItem != null && tvi.Equals(_tempTreeViewItem) == false)
                {
                    HideAdorner(_tempTreeViewItem);
                }
                _tempTreeViewItem = tvi;
            }
        }
        // 교환
        private void TreeViewItem_Drop(object sender, DragEventArgs e)
        {
            try
            {
                // null이 있다면
                if (selectedTreeViewItem is null || changedTreeViewItem is null)
                {
                    throw(new Exception());
                }
                // 본인과 같으면
                if (selectedTreeViewItem.Equals(changedTreeViewItem))
                {
                    throw (new Exception());
                }

                var parent = changedTreeViewItem.Parent as ItemsControl;
                int index  = parent.Items.IndexOf(changedTreeViewItem);

                // selected 아이템을 분리함
                ItemsControl originParent = selectedTreeViewItem.Parent as ItemsControl;
                int          originIndex  = originParent.Items.IndexOf(selectedTreeViewItem);
                originParent.Items.Remove(selectedTreeViewItem);
                try
                {
                    switch (collocate)
                    {
                    case Collocate.Upper:
                        parent.Items.Insert(index, selectedTreeViewItem);
                        break;

                    case Collocate.Child:
                        changedTreeViewItem.Items.Add(selectedTreeViewItem);
                        break;

                    case Collocate.Lower:
                        index++;
                        parent.Items.Insert(index, selectedTreeViewItem);
                        break;
                    }
                }
                catch (Exception)
                {
                    // first가 child보다 상위 Depth일때 되돌리기
                    originParent.Items.Insert(originIndex, selectedTreeViewItem);
                }
            }
            catch
            {
            }
            finally
            {
                try
                {
                    changedTreeViewItem.FontWeight = FontWeights.Normal;
                }
                catch
                {
                }

                (XAML_TreeView.Items[0] as TreeViewItem).IsSelected = false;
                selectedTreeViewItem = null;
                changedTreeViewItem  = null;
            }
        }