我正在开发一个 WPF 应用程序,它有一个表示 XML 的树视图。我将 XML 加载到 XDocument,然后将 TreeView 绑定到该对象。
现在使用MVVM模式 http://blogs.msdn.com/johngossman/archive/2006/04/13/576163.aspx,我想提供一个视图模型在之上X文档。我应该在 ViewModel 类中实现哪些内容?
我在想,
- RoutedCommands 绑定到 TreeView 上的 ContextMenu 命令,以允许添加节点、删除节点、修改节点等
- 实际修改视图上的属性和节点名称的逻辑。
我的方向正确吗?我还应该做些什么来使其更清晰、模块化,同时易于理解。
我应该使用 RoutedCommands 还是实现 ICommand 接口并创建我的命令?
如何使用 CommandBindings 的附加属性?在我正在谈论的树视图应用程序中这样做有意义吗?我有点不知所措,因为有这么多选项可以实现这一点。
有谁有做这类事情的链接、示例代码吗?参考实现可能是?
我和你在一起。我开始于
(ui) (xml)
其中 xml 表示为 LINQy XElements,因此我收到了 PropertyChange 通知。
然后我添加了一些无状态帮助器类来帮助我处理 xml(公开属性、验证数据等)。我将 XElement 捆绑在 ObservableCollections 中,这样我就可以绑定到它们。
了解 M-V-VM,并决定将我的帮助器类转换为 ViewModel。问题:
辅助类位于数据模型命名空间中,它对 UI 一无所知。 Helper 类知道如何将数据库行转换为 XElement,ViewModel 永远不应该看到这一点。
处理 xml 的帮助程序类。 ViewModel 不应该知道或关心。
所以我实际上正在考虑实施
(ui) (viewmodel) (helper) (xml)
但我只是不愿意在助手中引发 PropChange 事件,而只是在视图模型中重新引发它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)