【问题标题】:Displaying an XDocument as a WPF treeview using an MVVM ViewModel使用 MVVM ViewModel 将 XDocument 显示为 WPF 树视图
【发布时间】:2011-01-13 03:03:35
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    选择是什么意思?

    如果您的意思是在 UI 中,那么在 XAML 中会处理。

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

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多