假设我有一个UserControl
whose DataContext
被设置为一个具有XmlDataProvider
财产。我想在控件的 XAML 中绑定到此属性,并指定一些 XPath。我试过这个:
<TreeView ItemsSource="{Binding Path=PropertyName, XPath=/items/item/*}">
在运行时,我收到异常“带有 XPath 的 BindingExpression 无法绑定到非 XML 对象”。删除Path
属性并设置TreeView
的 DataContext 到XmlPropertyName
直接就可以正常工作了。
是什么赋予了?是Path
and XPath
相互排斥?
它们并不相互排斥,正如在数据绑定概述 http://msdn.microsoft.com/en-us/library/ms752347.aspx在下面指定值的路径部分。
XPath 表达式将在 Path 属性之前执行,但有时需要使用 Bea Stollnitz 解释的那样here https://web.archive.org/web/20090119093456/http://bea.stollnitz.com/blog/?p=51 and here https://web.archive.org/web/20090119075420/http://bea.stollnitz.com/blog/?p=50.
“删除 Path 属性并将 TreeView 的 DataContext 直接设置为 XmlPropertyName 效果很好。”
既然您提到了这一点,在我看来,您似乎希望在 XPath 表达式之前对 Path 属性进行求值,这就是您收到错误的原因,XPath 表达式正在对您当前的上下文进行求值,并且路径是之后进行评估。
错误解释
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)