如何从ItemCollection访问元素?

时间:2017-04-28 20:10:01

标签: c# wpf treeview itemcollection

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

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

foreach抛出运行时错误:

  

无法转换' System.Xml.XmlElement'类型的对象键入' System.Windows.Controls.TreeViewItem'。

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

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

TreeView的Items集合包含XmlElements,您可以直接访问它们,如下所示:

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

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

var treeViewItem = (TreeViewItem)OOB.ItemContainerGenerator.ContainerFromItem(node);