使用MVVM ViewModel将XDocument显示为WPF树视图

时间:2011-01-13 03:03:36

标签: wpf mvvm treeview viewmodel linq-to-xml

我将XSD作为SQL Server XML或oracle XMLtype字段中的数据保存。我从数据库中检索XSD作为XDocument。我想在WPF树视图中显示此XDocument。如果我使用xmldataprovider和hierarchicalDataTemplate将Xdocument直接绑定到树视图,这是相对简单的。

但是,我的应用程序正在使用mvvm模式,我希望在ViewModel层中表示xdocument,然后树视图以与Josh Smith关于将WPF树视图绑定到ViewModel的文章类似的方式绑定到该层。 http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

我的目标是选择XSD的XNode(XDocument)。

有关如何在ViewModel中表示XSD的Xdocument以便我可以选择XNode的任何建议吗?

1 个答案:

答案 0 :(得分:0)

如果您正在进行只读操作,我建议您保持简单,不要引入没有任何好处的新类。如果您想支持编辑结构,请留下您应添加视图模型的注释。即使您希望能够编辑文档,您仍可以直接绑定到文档和节点,具体取决于您的需求。

如果您需要更高级的支持(例如INotifyPropertyChanged),我建议您根据XObject创建类似原始API的类层次结构。我只会在UI中添加我计划直接支持的属性。然后我会创建一个单独的模型类,可以从XDocumentViewModel层次结构转换为真实的XDocument,然后返回。

  

...如何[表示]在ViewModel中表示XSD的Xdocument,以便我可以选择一个XNode。

select是什么意思?

如果你的意思是在UI中,那么在XAML中就可以了。

如果您正在讨论查询视图模型,那么您可以尝试对基础文档使用现有的LINQ XML查询API。保留一个内部字典,将XObjects映射回视图模型对象,当您获得结果时,只需在返回字典之前查找每个结果。