2

我们正在使用 WPF Toolkit 中的 WPF DataGrid,并且正在使用 MVVM。我在 MVVM 中使用 MultiSelect 时遇到了一些挑战,我确信我只是缺少一些简单的东西。在 DataGrid 中选择一行时,我可以使用 ViewModel 中的“IsSelected”来获取事件。这适用于单个选择。

如果我设置“SelectionMode=Extended”,我仍然只能在选择 DataGrid 中的第一行时获得事件。代码隐藏中的SelectionChanged 会获取每个选择事件,但我真的想在 ViewModel 中进行这项工作。我只是缺少这个 multiSelect 的简单解决方案。我还尝试将 SelectedItems (复数)绑定到一个集合以获取所有这些,但 SelectedItems 是只读的,因此无法绑定。我肯定会感谢有关如何执行此操作的任何想法,因为我无法将此方法从代码隐藏移动到 ViewModel。

4

1 回答 1

2

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

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

如果您对具体示例感兴趣,则可以查看WPF 应用程序框架 (WAF)的 ViewModel 示例。

我希望这有帮助。

于 2009-11-17T20:14:19.430 回答