绑定XmlDataProvider失败?

时间:2011-12-07 09:38:37

标签: wpf binding mvvm treeview xmldataprovider

我有一些将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( 谢谢你的帮助。

1 个答案:

答案 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}"/>