[英]How to bind xml to wpf treeview?
如何将XML绑定到WPF TreeView? 我正在使用棱镜mvvm模式。 我更喜欢使用IList来保存要循环的数据。
我已经尝试了http://geeklyeverafter.blogspot.com/2010/03/wpf-treeview-bound-to-xml-file.html和http://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的想法听起来很有趣。
同时,请检查此链接。 向前看似乎很困难。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.