繁体   English   中英

如何将XML绑定到WPF TreeView?

[英]How to bind xml to wpf treeview?

如何将XML绑定到WPF TreeView? 我正在使用棱镜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,但没有任何效果。

好。 问题现在已经很老了,但是我认为有一种将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代码中优化模板。

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

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

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

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

同时,请检查此链接。 向前看似乎很困难。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM