【发布时间】:2011-01-26 01:23:20
【问题描述】:
我将 DataTemplates 绑定到 XmlDataProvider。由于所讨论的 XML 数据使用了命名空间,因此我还将 XmlNamespaceManager 附加到 XmlDataProvider 并为其映射了一个前缀。
当从 XmlDataProvider 的根目录绑定到新的 XPath 时,命名空间前缀可以很好地理解并且我得到了结果。但是,如果我在 DataTemplate 中尝试执行另一个基于 XPath 的绑定,则输出窗口会在运行时显示此错误:
由于源节点错误或路径错误,无法获取结果节点集合。 SourceNode='IntegrationProfile'; Path='i:Role' BindingExpression:Path=; DataItem='XmlElement' (HashCode=19883454);目标元素是'TabControl'(名称='');目标属性是 'ItemsSource'(类型 'IEnumerable') XPathException:'System.Xml.XPath.XPathException: 需要命名空间管理器或 XsltContext。此查询具有前缀、变量或用户定义的函数。
此错误是由这行 XAML 引发的:
<TabControl ItemsSource="{Binding XPath=i:Role}"/>
在 DataTemplate 中。 NamespaceManager 附加在代码中,如下所示:
_profile = new XmlDataProvider();
_profile.Document = new XmlDocument();
_profile.Document.Load(ProfilePath);
_profile.XmlNamespaceManager = NamespaceManager;
WPF 是否忘记附加了 NamespaceManager?
【问题讨论】:
标签: .net wpf data-binding