将XmlDataProvider绑定(bind)到WPF TreeView时遇到一些问题。

TreeView是XAML定义的,如下所示:

<TreeView ItemsSource="{Binding Path=SelectedSystemVersionHistory}"/>

在XML文件中的节点的TreeView的父网格资源中,我有一个HierarchicalDataTemplate:
<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(
谢谢您的帮助。

最佳答案

不幸的是,您不能直接绑定(bind)XmlDataProvider的Document和Source属性,因为它们不是DependencyProperties。
另请参阅How to bind XmlDataProvider.Source to MVVM property

您可以做的是将Treeview的DataContext分配给XMLDataProvider:

<TreeView DataContext="{Binding SelectedSystemVersionHistory}" ItemsSource="{Binding XPath=Documentation}"/>

10-07 18:51