MVVM不允许使用代码后台和事件处理。那么,MVVM如何通知单元格已更改?
MVVM不允许使用代码后台和事件处理。那么,MVVM如何通知单元格已更改?
这是一个相当合理和明显的问题,因为对于MVVM问题有相当合理的解决方案。我猜有人将其标记为负面评价,因为这可能已经被问了无数次。
我知道在.Net4中有内置的方法来做到这一点。但我卡在了.Net3.5上,所以我使用WPF工具包中的CommandReference类,将视图中的事件转换为视图模型中的命令。
"MVVM 不允许代码后台和事件处理。"
哎呀!这就是问题所在。
MVVM 确实不鼓励使用代码后台,但只有当可以通过 Xaml 合理完成某些事情时才会这样做。"不要使用代码后台" 从来没有被任何有头脑的人说过。
有时处理事件是实现目标最简单、最好的方法。当出现这种情况时,接受它,解决问题,然后继续前进。有时甚至无法在 XAML 中实现目标。在这种情况下,将视图逻辑放在视图的代码后台中,然后继续前进。
保持 MVVM 的架构目标(层之间的关注点分离)比严格遵守经验法则(如避免使用代码后台)更为重要。如果没有做出这种区分,你就会看不到森林而只看到树木。
由于此问题从未被标记为答案;您需要的是“事件到命令”实现。基本上,它捕获您选择的事件并在ViewModel上调用ICommand
实现。
这里已经有了答案总结(请查看Derek Beattie的答案)。