.net &引用;需要名称空间管理器或XsltContext“;当{Binding XPath=ns:Foo}
我正在将数据模板绑定到XmlDataProvider。由于所讨论的XML数据使用名称空间,我还将XmlNamespaceManager附加到XmlDataProvider,并将前缀映射到它 当绑定到XmlDataProvider根以外的XPath时,名称空间前缀可以很好地理解,我得到了结果。但是,如果我尝试从DataTemplate中执行另一个基于XPath的绑定,则输出窗口会在运行时显示此错误: 由于源节点或路径错误,无法获取结果节点集合。;SourceNode='IntegrationProfile';Path='i:Role'绑定表达式:Path=;DataItem='XmlElement'(HashCode=19883454);目标元素为“TabControl”(名称=“”);目标属性为“ItemsSource”(类型为“IEnumerable”)XPathException:“System.Xml.XPath.XPathException:需要命名空间管理器或XsltContext。此查询具有前缀、变量或用户定义的函数 此错误是由这行XAML引起的:.net &引用;需要名称空间管理器或XsltContext“;当{Binding XPath=ns:Foo},.net,wpf,data-binding,.net,Wpf,Data Binding,我正在将数据模板绑定到XmlDataProvider。由于所讨论的XML数据使用名称空间,我还将XmlNamespaceManager附加到XmlDataProvider,并将前缀映射到它 当绑定到XmlDataProvider根以外的XPath时,名称空间前缀可以很好地理解,我得到了结果。但是,如果我尝试从DataTemplate中执行另一个基于XPath的绑定,则输出窗口会在运行时显示此错误: 由于源节点或路径错误,无法获取结果节点集合。;SourceNode='IntegrationPro
<TabControl ItemsSource="{Binding XPath=i:Role}"/>
WPF是否忘记了附加了名称空间管理器?自己找到了原因和解决方案 原因:DataTemplate的DataContext绑定到第一个查询中选择的子元素,并且作用域不会“返回”到NamespaceManager的附加位置 解决方案:在资源块中创建XmlNamespaceMappingCollection:
<Window.Resources>
<XmlNamespaceMappingCollection x:Key="MyNamespaces">
<XmlNamespaceMapping Uri="http://foo.com/MyNamespace" Prefix="i"/>
</XmlNamespaceMappingCollection>
...
</Window.Resources>
将其放在ItemSource=“…”旁边的同一元素中不起作用,但将其作为父元素的属性起作用
<Window.Resources>
<XmlNamespaceMappingCollection x:Key="MyNamespaces">
<XmlNamespaceMapping Uri="http://foo.com/MyNamespace" Prefix="i"/>
</XmlNamespaceMappingCollection>
...
</Window.Resources>
Binding.XmlNamespaceManager="{StaticResource MyNamespaces}"