Связывание с XmlDataProvider не выполняется? - PullRequest
3 голосов
/ 07 декабря 2011

У меня есть некоторые проблемы с привязкой XmlDataProvider к WPF TreeView.

TreeView определяется XAML следующим образом:

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

и у меня есть HierarchicalDataTemplate в ресурсе родительской сетки TreeView для узлов в файле 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 Ответ

1 голос
/ 07 декабря 2011

К сожалению, вы не можете напрямую связать свойства Document и Source объекта XmlDataProvider, они не являются DependencyProperties.См. Также Как связать XmlDataProvider.Source со свойством MVVM

Что вы можете сделать, это назначить DataContext TreeView XMLDataProvider:

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