我有一些将XmlDataProvider绑定到WPF TreeView的问题。
TreeView的XAML定义如下:
<TreeView ItemsSource="{Binding Path=SelectedSystemVersionHistory}"/>
我在TreeView的父网格资源中有一个HierarchicalDataTemplate,用于XML文件中的节点:
<HierarchicalDataTemplate DataType="Documentation" ItemsSource="{Binding XPath=*}">
<TextBlock Text="{Binding XPath=@SoftwarePackage}"/>
</HierarchiclaDataTemplate>
我的ViewModel有这个属性:
public XmlDataProvider SelectedSystemVersionHistory
{
get
{
String file = GetHistoryFile(); //returns full Filepath
return new XmlDataProvider()
{
source = new Uri(file, UriKind.Absolute),
XPath= "History"
};
}
}
Xml看起来像这样:
<?xml version="1.0" standalone="yes" encoding="utf-8">
<History>
<Documentation SoftwarePackage="SoftwarePackageName">
<Entry>...</Entry>
</Documentation>
</History>
问题是TreeView没有显示任何内容,所以出了什么问题? 我现在正在研究这几天......:o( 谢谢你的帮助。
答案 0 :(得分:1)
不幸的是,您无法直接绑定XmlDataProvider的Document和Source属性,它们不是DependencyProperties。 另请参阅How to bind XmlDataProvider.Source to MVVM property
您可以做的是将Treeview的DataContext分配给XMLDataProvider:
<TreeView DataContext="{Binding SelectedSystemVersionHistory}" ItemsSource="{Binding XPath=Documentation}"/>