如何访问 ItemCollection 中的元素?

How to access elements from an ItemCollection?

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

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

foreach 抛出运行时错误:

Unable to cast object of type 'System.Xml.XmlElement' to type 'System.Windows.Controls.TreeViewItem'.

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

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

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