gpt4 book ai didi

wpf - 如何将控件绑定(bind)到 ViewModel(MVVM 模式)中的 XmlDocument 元素?

转载 作者:行者123 更新时间:2023-12-03 11:00:47 25 4
gpt4 key购买 nike

我正在尝试绑定(bind) 文本 block 对于 XML 文档的元素,如果源是 StaticResouce,它可以正常工作,但是当通过 ViewModel 公开时,我无法弄清楚绑定(bind)到同一 XML 文档的语法。

这是 XML 文档:

<Books>
<Book ID="1" Name="ABC" />
<Book ID="2" Name="DEF" />
<Book ID="3" Name="XYZ" />
</Books>

绑定(bind)到静态资源 = 成功

资源文件包含一个引用 Books.xml 的 XmlDataProvider:
<XmlDataProvider x:Key="data" Source="Books.xml"/>

这就是我绑定(bind)到 xml 文件的方式。
<TextBlock Text="{Binding Source={StaticResource data},XPath=/Books/Book/@Name}"/>
<XmlDataProvider x:Key="data" Source="../Views/Data.xml" />

正如我之前所说,上面的绑定(bind)工作正常,它显示“ABC”。但是,该 XmlDocument 应该来自 SQL Server 并通过 ViewModel(MVVM 模式)公开。

绑定(bind)到 ViewModel = 失败

ViewModel 中的 Books 属性填充了完全相同的 XML(见上文):
public XmlDocument Books { get; set; }

这是我用来绑定(bind)到 ViewModel 的语法:
<TextBlock Text="{Binding Books,XPath=/Books/Book/@Name}" />

它不返回任何内容,并且我收到以下错误消息:

BindingExpression with XPath cannot bind to non-XML object.



任何帮助是极大的赞赏。

最佳答案

在您绑定(bind)到静态资源的示例中,您的绑定(bind)路径指向一个 XmlDataProvider,它“适应”您的 XmlDocument。而在您的 ViewModel 示例中,您的 Path 是 XmlDocument 本身。要从您的 ViewModel 实现等效绑定(bind),该属性需要公开一个 XmlDataProvider。

关于wpf - 如何将控件绑定(bind)到 ViewModel(MVVM 模式)中的 XmlDocument 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com