如何使用TreeViewDragDropTarget MVVM

时间:2010-11-24 20:10:19

标签: silverlight mvvm-light silverlight-toolkit

TreeViewDragDropTarget中似乎有很多“幕后魔术”。

到目前为止我看过的所有帖子都停止在树视图的演示中,而没有解释TreeView绑定的数据集合的内容。

TreeViewDragDropTargt如何与TreeView绑定的ViewModel属性进行通信?是否有任何面向MVVM的演练或有关TreeView Drag and Drop ala MVVM的教程?

更新: "If an item is dropped onto the drag drop target, it is added to the nested control if the nested control is bound to an ObservableCollection (or any collection that implements INotifyCollectionChanged and contains the same type of items as the item that was dropped)."

这意味着我可以挂钩ObservableCollection的CollectionChanged事件,我的TreeView必然会保持我的模型同步。

有更好的选择吗?

1 个答案:

答案 0 :(得分:1)

到目前为止,我还没有看到更好的选择。请记住,MVC / MVP / MVVM模式背后的重点是在测试中尽可能多地放入代码。

对于拖放,我使用了演示文稿 - >代码背后 - > Messenger提升消息“已添加项目”...并从ViewModel中捕获事件。

如果Code Behind中存在自定义逻辑,例如,验证“源”是否为有效状态,例如,或者是正确类型等,则可以在“服务”中委托此检查(依赖注入)那将专门处理这些奇怪的案件。 “守则背后”变得模糊,“拖拽服务”变得可以测试。

您是否真的需要“拖动服务”,如果是这样,您是否应该为每个ViewModel设置一个“拖动服务”,或者每个应用程序一个?我会回答你的经典答案“它取决于”。