3

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

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

我在想,

  1. RoutedCommands 绑定到 TreeView 上的 ContextMenu 命令以允许添加节点、删除节点、修改节点等
  2. 实际修改视图上的属性和节点名的逻辑。

我是否朝着正确的方向前进?我还应该做些什么来使它更简洁、模块化,同时易于理解。

我应该使用 RoutedCommands 还是实现 ICommand 接口并创建我的命令?使用 CommandBindings 的附加属性怎么样?在我正在谈论的树视图应用程序中这样做有意义吗?我有点不知所措,因为有很多选项可以实现这一点。

有没有人有链接,做这种事情的示例代码?一个参考实现可能是?

4

1 回答 1

1

我和你在一起。我从

(ui) <-> (xml)

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

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

阅读有关 MV-VM 的信息,并决定将我的辅助类转换为 ViewModel。问题:Helper 类存在于对 UI 一无所知的数据模型命名空间中。Helper 类知道如何将数据库行转换为 XElement,ViewModel 永远不会看到这一点。帮助类处理 xml。ViewModel 不应该知道或关心。

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

(ui) <-> (viewmodel) <-> (helper) <-> (xml)

但我只是不愿在助手中引发 PropChange 事件,只是为了在视图模型中重新引发它们。

于 2008-11-15T08:15:23.397 回答