/// <summary> /// 查找父路径 /// </summary> /// <param name="source"></param> /// <param name="target"></param> /// <returns>父节点</returns> private List <TreeViewDemoItem> GetParentNodes(TreeViewDemoItem source, TreeViewDemoItem target) { if (target == null || source == null) { return(null); } if (source == target) { //用非null的空集合表示匹配成功 return(new List <TreeViewDemoItem>()); } else { var result = new List <TreeViewDemoItem>(); foreach (var treeViewDemoItem in source.Children) { var getResult = GetParentNodes(treeViewDemoItem, target); if (getResult != null) { result.Add(treeViewDemoItem); result.AddRange(getResult); return(result); } } } return(null); }
public TreeViewDemoWindow() { InitializeComponent(); GetAllParentsFun = GetAllParentsFunHandler; var flagTreeViewItem = new TreeViewDemoItem(); TreeViewItems = new List <TreeViewDemoItem>(); for (int i = 0; i < 5; i++) { var newTreeItem = new TreeViewDemoItem(); for (int j = 0; j < 15; j++) { var subTreeViewItem = new TreeViewDemoItem(); for (int k = 0; k < 25; k++) { if (i == 3 && j == 5 && k == 12) { subTreeViewItem.Children.Add(flagTreeViewItem); } else { subTreeViewItem.Children.Add(new TreeViewDemoItem()); } } newTreeItem.Children.Add(subTreeViewItem); } TreeViewItems.Add(newTreeItem); } DataContext = this; SelectedItem = flagTreeViewItem; }