0

我想访问ItemCollection包含来自Treeview(称为OOB)的项目的内容。

if (OOB.Items.Count > 0)
{
    ItemCollection items = OOB.Items;
    foreach (TreeViewItem node in items)

foreach抛出运行时错误:

无法将“System.Xml.XmlElement”类型的对象转换为“System.Windows.Controls.TreeViewItem”类型。

我可以在ItemCollection我想从调试器访问的项目中看到信息:

在此处输入图像描述

如何访问元素,特别是元素名称?

4

1 回答 1

1

ItemsControl的ItemsorItemsSource集合包含任意类型的数据项,而不是 TreeViewItems(除非您明确添加它们)。

您的 TreeView的Items集合包含 XmlElements,您可以像这样直接访问它:

foreach (XmlElement node in OOB.Items)
{
    var name = node.Name; // node is an XmlElement
    ...
}

如果您确实需要访问项目容器,您可以ItemContainerGenerator像这样使用 ItemsControl:

var treeViewItem = (TreeViewItem)OOB.ItemContainerGenerator.ContainerFromItem(node);
于 2017-04-28T20:20:35.480 回答