您可以在 TreeView.Items 集合上使用.Where
ExtensionMethod,然后按您想要的方式查找。
WPF 中不再有 TreeNode,而是 TreeView 有 TreeViewItems,ListView 有 ListViewItems 等。所以在这些情况下,您应该使用 TreeViewItem。(虽然你可以将任何你喜欢的东西添加到 TreeView,它会为你包装它。)
FindName 返回一个对象,因为它不知道要找到什么,您必须将其转换为您期望的对象。但这是您想要使用的行为。此外,虽然任何具有名称的元素在 XAML 中创建时都会自动注册,但如果您在 C#/VB 中创建项目并将它们添加到 UI,则不会出现这种情况。您必须“注册”他们的名字才能通过 FindName() 访问它。
这是一个演示 TreeViewItem 并通过 FindName 访问 TreeView 元素的小示例:
TreeView tree = new TreeView() { Name = "tree" };
uiDockPanel.Children.Add(tree);
var item1 = new TreeViewItem() { Header = "Item 1", Name = "Item1" };
tree.Items.Add(item1);
item1.RegisterName("Item1", item1);
var item2 = new TreeViewItem() { Header = "Item 2", Name = "Item2" };
tree.Items.Add(item2);
item1.RegisterName("Item2", item2);
var item3 = new TreeViewItem() { Header = "Item 3", Name = "Item3" ;
tree.Items.Add(item3);
item1.RegisterName("Item3", item3);
var i2 = tree.FindName("Item2") as TreeViewItem;
var subitem = new TreeViewItem() { Header = "SubItem 1"};
i2.Items.Add(subitem);