【问题标题】:How to bind a XDocument object to a Treeview without using codebehind?如何在不使用代码隐藏的情况下将 XDocument 对象绑定到 Treeview?
【发布时间】:2012-12-13 15:13:52
【问题描述】:

我尝试在不使用任何代码隐藏的情况下将 XDocument 对象绑定到树视图,因此它符合 MVVM 模式。到目前为止,我还没有想出如何做到这一点。我搜索了很多,看到了很多关于 XDocuments 和 treeviews 的问题,但没有一个真正有帮助,他们中的大多数确实有代码,或者没有(清楚地)解释如何去做。

我认为这很容易

<treeview ItemsSource="{Binding Path=TheXDocumentObject, Mode=TwoWay}" />

但我的树列表保持为空(我 100% 确定 XML 文件已按应有的方式加载到 XDocument 中)。我还找到了 XmlDataProvider,但它的 Source 不允许数据绑定,因为它不是 DependencyProperty 或 DependencyObject。

所以我有点卡在这里,我需要怎么做才能将 XDocument 对象绑定到树视图而没有代码隐藏?感谢您的帮助。

【问题讨论】:

    标签: c# xaml mvvm treeview linq-to-xml


    【解决方案1】:

    如果没有后面的代码或转换器(或视图模型中的某些代码),这将是不可能的。XDocument 用于 LINQ to Xml,当您阅读文档而不是公共时,它上面没有集合属性xmlnodes 的集合。您可以使用 XmlDocumdnt 和 HierarchicalDataTemplate 来做到这一点(不使用任何 c#)

    【讨论】:

    • 基于互联网上的搜索和低有用的搜索结果,我担心这是不可能的。你说的是转换器,你是什么意思?一个自己的类结构,其中类结构匹配 XML 文档中的元素结构并将类结构绑定到树,或者有更好的方法将 XDocument 转换为可以绑定到树视图的对象?
    • 您可以编写一个 IValueConverter 参见:msdn.microsoft.com/en-us/library/… 您绑定到 xaml 中的值,将其设置为绑定中的转换器,它将返回结果。您可以做的是编写一个转换器,以便它评估 XDocument 并返回 XmlNode 的集合。从那时起,您可以使用自己的 ItemTemplate 以您想要的方式显示它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2021-04-25
    • 2012-03-07
    • 2012-02-04
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多