我正在开发一个WPF应用程序,它有一个表示XML的树视图。我将XML加载到XDocument,然后将TreeView绑定到此对象。
现在使用MVVM pattern,我想在 XDocument 之上提供 ViewModel 。我应该在ViewModel类中实现哪些内容。
我在考虑,
我是朝着正确的方向前进的吗?我还应该做些什么来使它更清洁,模块化,同时易于理解。
我应该使用RoutedCommands还是实现ICommand接口并创建命令? 如何使用CommandBindings的附加属性?在我正在讨论的treeview应用程序中执行此操作是否有意义?我有点不知所措,因为有很多选择可以实现这个。
有没有人有链接,示例代码可以做这类事情?参考实现可能是?
答案 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中重新加载它们。