如何将xml绑定到wpf treeview?我正在使用Prism 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 但没有任何效果。
答案 0 :(得分:1)
行。问题现在已经很老了,但我认为有一种简单的方法可以将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代码中优化模板。
答案 1 :(得分:0)
我这样做的方法是创建一个方法,将树视图构建为treeview属性。将WPF树视图项绑定到类中treeview属性的items属性。当然,在ViewModelBase中实现INotifyPropertyChanged是必不可少的。
我很乐意举个例子,但我目前无法在我的电脑上访问互联网
我确实在帖子中看到并且同意这不是最熟练的方式。但是,由于您已经在使用xml序列化,因此完成了对xml的解析,现在您只需要使用这些数据。
我认为,如果您不打算序列化,那么您发布的链接将在您尝试实现的方法中保持更多的有效性。但那只是IMO。我明天有机会更新一些工作代码,直接将数据绑定到xml的想法听起来很有趣。
在此期间,请检查此链接。它看起来很漂亮。