C# 如何在不使用codebehind的情况下将XDocument对象绑定到Treeview?

C# 如何在不使用codebehind的情况下将XDocument对象绑定到Treeview?,c#,xaml,mvvm,treeview,linq-to-xml,C#,Xaml,Mvvm,Treeview,Linq To Xml,我尝试在不使用任何代码隐藏的情况下将XDocument对象绑定到treeview,因此它符合MVVM模式。到目前为止,我还不知道怎么做。我搜索了很多,看到了很多关于XDocuments和TreeView的问题,但没有一个真正有用,大多数都有代码隐藏,或者没有(清楚地)解释如何做 我想这很容易 <treeview ItemsSource="{Binding Path=TheXDocumentObject, Mode=TwoWay}" /> 但是我的树列表仍然是空的(我100%确定

我尝试在不使用任何代码隐藏的情况下将XDocument对象绑定到treeview,因此它符合MVVM模式。到目前为止,我还不知道怎么做。我搜索了很多,看到了很多关于XDocuments和TreeView的问题,但没有一个真正有用,大多数都有代码隐藏,或者没有(清楚地)解释如何做

我想这很容易

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

但是我的树列表仍然是空的(我100%确定XML文件已经像应该的那样加载到XDocument中)。我还找到了XmlDataProvider,但它的源不允许数据绑定,因为它不是DependencyProperty或DependencyObject


所以我有点困在这里了,我需要做什么才能将XDocument对象绑定到treeview而不需要代码隐藏?感谢您的帮助。

如果没有代码隐藏或转换器(或视图模型中的某些代码),这是不可能的。XDocument用于LINQ to Xml,在您阅读文档时,它没有集合属性,也不是xmlnodes的公共集合。您可以使用XmlDocumdnt和HierarchycalDataTemplate(不使用任何c#)来实现这一点。

基于互联网上的搜索和低有用的搜索结果,我担心这是不可能的。你说的是转换器,这是什么意思?一个自己的类结构,其中类结构与XML文档中的元素结构匹配,并将类结构绑定到树上,或者有更好的方法将XDocument转换为可以绑定到树视图的对象吗?您可以编写一个IValueConverter请参见:绑定到xaml中的值,将此设置为绑定中的转换器,它将返回结果。您可以做的是编写一个转换器,以便它计算XDocument并返回XmlNodes的集合。从那时起,您可以使用自己的ItemTemplate以您想要的方式显示它。