MVVM将XML文档绑定到TreeView

时间:2015-05-13 14:26:23

标签: c# wpf xaml mvvm treeview

在阅读了很多非常相似的帖子之后,我无法让它发挥作用。我的问题似乎发生在Binding中,但我不知道错误是什么。我正在使用MVVM模式,并尝试将XML文件显示到UserControl的TreeView中。

这是我的View XAML代码

   public class EepromViewModel : WorkspaceViewModel
   {
      private System.Windows.Data.XmlDataProvider _xmlEeprom;
      public System.Windows.Data.XmlDataProvider XmlEeprom
      {
         get { return this._xmlEeprom; }
         set { this._xmlEeprom = value; OnPropertyChanged("XmlEeprom"); }
      }
      protected override void Start()
      {
         System.Windows.Data.XmlDataProvider dataProvider = new System.Windows.Data.XmlDataProvider();

         dataProvider.Source = new Uri(@"E:\Projects\Irma\blah blah blah\xmlFile.xml");
         dataProvider.IsInitialLoadEnabled = true;
         dataProvider.IsAsynchronous = false;
         dataProvider.XPath = "*";

//         //Test with XmlDocument directly faild too 
//         XmlDocument xmlDoc = new XmlDocument();
//         xmlDoc .LoadXml(
//               @"<root>
//                    <child1>text1</child1>
//                    <child2>text2</child2>
//                  </root>");
//         dataProvider.Document = xmlDoc ;
         this.XmlEeprom = dataProvider;
      }
   }

ViewModel类

{{1}}

当我跟踪代码时,DataProvider已加载良好,文档存在。为什么它不会显示在treeView中?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案(偶然!)。

我只是从

更改绑定
<TreeView Margin="10,50,10,10"
                  ItemsSource="{Binding XmlEeprom}"
                  ItemTemplate= "{StaticResource NodeTemplate}"/>

<TreeView Margin="10,50,10,10"
                  ItemsSource="{Binding XmlEeprom.Document}"
                  ItemTemplate= "{StaticResource NodeTemplate}"/>

现在它的作品就像一个魅力!