【发布时间】:2017-07-07 07:11:59
【问题描述】:
我正在尝试遍历两个集合的 XElement,以便比较它们,但我得到了错误:
System.InvalidCastException: '无法转换类型的对象 'System.Windows.Controls.TreeViewItem' 键入 'System.Xml.Linq.XElement'。'
我的代码是:
private void CompareTrees(ItemCollection xml,ItemCollection xsd )
{
bool isMatch = false;
string header = string.Empty;
foreach (XElement xexsd in xsd)
{
foreach (XElement xexml in xml)
{
if (xexsd.Name.LocalName + " - " + xexsd.Value == xexml.Name.LocalName + " - " + xexsd.Value)
{
CompareTrees(xml, xsd);
isMatch = true;
break;
}
}
if (isMatch == true)
{
continue;
}
else
{
var item = new ListBoxItem();
lbItems.Items.Add(item);
}
}
}
【问题讨论】:
-
在您的 2 个 foreach 循环中放置一个断点,您将看到 xsd 或 xml(或两者)中的集合是 System.Windows.Controls.TreeViewItem 的实际集合。因此,您不能将它们强制转换为 System.Xml.Linq.XElement,因为前者不会从后者继承。
-
谢谢,但我知道 Content 不是 TreeViewItem 库的一部分
-
你没有在这里问任何问题。
-
更改自:CompareTrees(xml, xsd);到:比较树(xexml,xexsd);