1

如何将 xml 绑定到 wpf 树视图?我正在使用 Prism mvvm 模式。我更喜欢 IList 来保存循环数据。

我试过http://geeklyeverafter.blogspot.com/2010/03/wpf-treeview-bound-to-xml-file.htmlhttp://www.blogs.intuidev.com/post/2009/12/28 /xml_to_treeview.aspx 但没有任何效果。

4

2 回答 2

2

好的。现在这个问题已经很老了,但我认为有一种简单的方法可以将 XML 绑定到 TreeView。也许它对某人有帮助。XAML:

<Window.Resources>
        <HierarchicalDataTemplate ItemsSource="{Binding Path=Elements}" x:Key="NodeTemplate">
            <Grid>
                <TextBlock Text="{Binding Path=Name}"/>
            </Grid>
        </HierarchicalDataTemplate>
</Window.Resources>

...

<TreeView x:Name="myTreeView" Grid.Column="0"
      ItemsSource="{Binding Path=Root.Elements}" 
      ItemTemplate="{StaticResource ResourceKey=NodeTemplate}"
      />

在后面的代码中,我只创建了一个 XDocument (System.Xml.linq) 并将其绑定到 TreeView 的 DataContext。例如像这样:

private XDocument _theXML;
public XDocument TheXML {
    get => _theXML;
    set => _theXML = value;
}
public MainWindow()
{
    ...
    InitializeComponent();
    DataContext = this;
    TheXML = XDocument.Load(@"c:\file.xml");
    myTreeView.DataContext = TheXML;
    myTreeView.UpdateLayout();
}

而已。XML 文件的内容将显示为 TreeView。如果您想查看更多详细信息(属性、...),您可以在 XAML 代码中优化模板。

于 2018-04-23T07:04:01.487 回答
0

我所做的方法是创建一个将树视图构建到树视图属性的方法。将 WPF 树视图项目绑定设置为类中树视图属性的 items 属性。当然,在 ViewModelBase 中实现 INotifyPropertyChanged 是必不可少的。

我很乐意举个例子,但我目前无法在我的电脑上访问互联网

我确实在帖子中看到并同意这不是最熟练的方式。但是由于您已经在使用 xml 序列化,所以 xml 的解析已经完成,现在您只需要使用数据即可。

我认为,如果您不打算进行序列化,那么您发布的链接将在您尝试实现的方法中更有效。但这只是国际海事组织。明天有机会时,我将更新一些工作代码,将数据直接绑定到 xml 的想法听起来很有趣。

同时检查这个链接。它看起来非常困难。

http://social.msdn.microsoft.com/Forums/vstudio/en-US/cbdb2420-1403-436f-aa7f-b1e3b1acb398/binding-any-xml-document-to-wpf-treeview?forum=wpf

于 2013-11-09T03:01:34.103 回答