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); } }
/// <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; } }