我有一个XmlDataProvider绑定到WPF TreeView的一些问题。
TreeView是这样定义的:
<TreeView ItemsSource="{Binding Path=SelectedSystemVersionHistory}"/>
和我有一个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 (谢谢你的帮助。
不幸的是,您不能直接绑定XmlDataProvider的Document和Source属性,它们不是DependencyProperties。另请参见如何绑定XmlDataProvider。MVVM属性的源代码
你能做的就是把Treeview的DataContext赋值给XMLDataProvider:
<TreeView DataContext="{Binding SelectedSystemVersionHistory}" ItemsSource="{Binding XPath=Documentation}"/>