WPF工具包DataGrid MultiSelect与MVVM

WPF工具包DataGrid MultiSelect与MVVM,mvvm,wpftoolkit,viewmodel,multi-select,Mvvm,Wpftoolkit,Viewmodel,Multi Select,我们正在使用WPF工具包中的WPF数据网格,并且正在使用MVVM。我发现在MVVM中使用MultiSelect存在一些挑战,我确信我只是缺少了一些简单的东西。在数据网格中选择行时,我可以使用ViewModel中的“IsSelected”来获取事件。这适用于单个选择 如果我设置“SelectionMode=Extended”,我仍然只会在选择DataGrid中的第一行时获取事件。codebehind中的SelectionChanged会获取每个选择事件,但我确实希望在ViewModel中实现这一点

我们正在使用WPF工具包中的WPF数据网格,并且正在使用MVVM。我发现在MVVM中使用MultiSelect存在一些挑战,我确信我只是缺少了一些简单的东西。在数据网格中选择行时,我可以使用ViewModel中的“IsSelected”来获取事件。这适用于单个选择


如果我设置“SelectionMode=Extended”,我仍然只会在选择DataGrid中的第一行时获取事件。codebehind中的SelectionChanged会获取每个选择事件,但我确实希望在ViewModel中实现这一点。对于这个多重选择,可能有一个简单的解决方案,我只是错过了。我还尝试将SelectedItems(复数)绑定到一个集合以获取所有这些内容,但SelectedItems是只读的,因此无法绑定到。我当然希望您能提供一些关于如何执行此操作的想法,因为我无法将此方法从代码隐藏移到ViewModel。

您可以在代码隐藏文件中侦听SelectionChanged事件,并将调用委托给ViewModel

M-V-VM模式不会从代码隐藏文件中删除所有代码。这是关于关注点的分离——将视图逻辑放入ViewModel中,让视图尽可能愚蠢

如果您对一个具体的示例感兴趣,那么您可以看看的ViewModel示例


我希望这能有所帮助。

嗨-谢谢您的回复。是的,我确实知道MVVM的想法不是完全从代码隐藏中删除代码,但我确实相信这个例子还有其他答案,不包括代码隐藏中的代码。也许解决方案是附加的行为。我还在找。我希望能找到更好的,但运气不好。我可以使用MVVM工具包Light和Event To命令,但最终只是从codebehind的SelectionChanged中进行授权。再次感谢jbe!我成功地将MVVM Light Toolkit的EventToCommand作为EventTrigger的一部分。我看过Laurent Bugnon的一个示例,发现它非常有用:无可否认,我没有在datagrid场景中使用它。。。只是绑定到其他数据模板。