在XDocument之上的ViewModel

时间:2008-11-04 17:02:46

标签: wpf xaml mvvm linq-to-xml

我正在开发一个WPF应用程序,它有一个表示XML的树视图。我将XML加载到XDocument,然后将TreeView绑定到此对象。

现在使用MVVM pattern,我想在 XDocument 之上提供 ViewModel 。我应该在ViewModel类中实现哪些内容。

我在考虑,

  1. 绑定到TreeView上的ContextMenu命令的RoutedCommands,允许添加节点,删除节点,修改节点等
  2. 在视图上实际修改属性和节点名称的逻辑。
  3. 我是朝着正确的方向前进的吗?我还应该做些什么来使它更清洁,模块化,同时易于理解。

    我应该使用RoutedCommands还是实现ICommand接口并创建命令? 如何使用CommandBindings的附加属性?在我正在讨论的treeview应用程序中执行此操作是否有意义?我有点不知所措,因为有很多选择可以实现这个。

    有没有人有链接,示例代码可以做这类事情?参考实现可能是?

1 个答案:

答案 0 :(得分:1)

我和你在一起。我从

开始

(ui)< - > (XML)

其中xml表示为LINQy XElements,因此我收到了PropertyChange通知。

然后我添加了一些无状态辅助类来帮助我处理xml(公开属性,验证数据等)。我在ObservableCollections中捆绑了XElements,所以我可以绑定它们。

了解M-V-VM,并决定将我的助手类转换为ViewModel。问题: Helper类存在于数据模型命名空间中,该命名空间对UI一无所知。 Helper类知道如何将数据库行转换为XElement,ViewModel应该永远不会看到它。 帮助程序类处理xml。 ViewModel不应该知道或关心。

所以我实际上正在考虑实施

(ui)< - > (viewmodel)< - > (助手)< - > (XML)

但我只是不愿意在帮助器中提升PropChange事件,只是为了在viewmodel中重新加载它们。