TreeViewDragDropTarget中似乎有很多“幕后魔术”。
到目前为止我看过的所有帖子都停止在树视图的演示中,而没有解释TreeView绑定的数据集合的内容。
TreeViewDragDropTargt如何与TreeView绑定的ViewModel属性进行通信?是否有任何面向MVVM的演练或有关TreeView Drag and Drop ala MVVM的教程?
这意味着我可以挂钩ObservableCollection的CollectionChanged事件,我的TreeView必然会保持我的模型同步。
有更好的选择吗?
答案 0 :(得分:1)
到目前为止,我还没有看到更好的选择。请记住,MVC / MVP / MVVM模式背后的重点是在测试中尽可能多地放入代码。
对于拖放,我使用了演示文稿 - >代码背后 - > Messenger提升消息“已添加项目”...并从ViewModel中捕获事件。
如果Code Behind中存在自定义逻辑,例如,验证“源”是否为有效状态,例如,或者是正确类型等,则可以在“服务”中委托此检查(依赖注入)那将专门处理这些奇怪的案件。 “守则背后”变得模糊,“拖拽服务”变得可以测试。
您是否真的需要“拖动服务”,如果是这样,您是否应该为每个ViewModel设置一个“拖动服务”,或者每个应用程序一个?我会回答你的经典答案“它取决于”。