假设我有一个UserControl
,其DataContext
设置为具有XmlDataProvider
属性的对象。我想在我的控件的XAML中绑定到这个属性,并指定一些XPath。我试过这个:
<TreeView ItemsSource="{Binding Path=PropertyName, XPath=/items/item/*}">
在运行时,我得到异常“BindingExpression with XPath无法绑定到非XML对象”。删除Path
属性并将TreeView
的DataContext设置为XmlPropertyName
可以直接正常工作。
是什么给出的? Path
和XPath
互相排斥吗?
答案 0 :(得分:3)
它们不是互斥的,正如指定价值路径部分下的Data Binding Overview中简要提到的那样。 XPath表达式将在Path属性之前执行,但有时可以使用Bea Stollnitz解释here和here。
“删除Path属性并将TreeView的DataContext设置为XmlPropertyName直接正常工作。”
既然你提到了这一点,在我看来你似乎期望在XPath表达式之前评估Path属性,这就是你得到错误的原因,XPath表达式正在评估你当前的上下文是什么,以及之后正在评估路径。 错误解释