【发布时间】:2011-01-22 07:12:28
【问题描述】:
我正在尝试将 TextBlock 绑定到 XML 文档的元素,如果源是 StaticResouce,它可以正常工作,但我无法弄清楚绑定到同一 XML 文档的语法当通过 ViewModel 暴露时。
这是 XML 文档:
<Books>
<Book ID="1" Name="ABC" />
<Book ID="2" Name="DEF" />
<Book ID="3" Name="XYZ" />
</Books>
绑定到静态资源 = 成功
资源文件包含一个 XmlDataProvider 参考 Books.xml:
<XmlDataProvider x:Key="data" Source="Books.xml"/>
这就是我绑定到 xml 文件的方式。
<TextBlock Text="{Binding Source={StaticResource data},XPath=/Books/Book/@Name}"/>
<XmlDataProvider x:Key="data" Source="../Views/Data.xml" />
正如我之前所说,上面的绑定工作正常,它显示“ABC”。但是,该 XmlDocument 应该来自 SQL Server 并通过 ViewModel(MVVM 模式)公开。
绑定到 ViewModel = FAILED
ViewModel 中的 Books 属性填充了完全相同的 XML(见上文):
public XmlDocument Books { get; set; }
这是我用来绑定到 ViewModel 的语法:
<TextBlock Text="{Binding Books,XPath=/Books/Book/@Name}" />
它没有返回任何东西,我收到以下错误消息:
带有 XPath 的 BindingExpression 无法绑定到非 XML 对象。
非常感谢任何帮助。
【问题讨论】:
标签: wpf xaml mvvm binding xmldocument