我正在试图理解这个概念而且它在逃避我。
这背后的一般概念是什么?我知道这是可能的,但我并没有完全按照我的研究/自己的测试项目来完成这项工作。
我希望在我的视图中不惜一切代价避免代码。我想从View中分离诸如“PreviewMouseDown”之类的事件,并让它们在ViewModel中触发一个Command。
有人能给我一些关于如何实现这个目标的基本指导吗?
要点:
查看(PreviewMouseDown) - >在ViewModel中调用命令(MyPreviewMouseDownCommand)
谢谢
答案 0 :(得分:12)
有被低估的风险,我认为这不是世界上最糟糕的事情
public void PreviewMouseDown(Object sender, RoutedEventArgs e)
{
var viewModel= (MyViewModel)DataContext;
if (viewModel.MyCommand.CanExecute(null))
viewModel.MyCommand.Execute(null);
}
答案 1 :(得分:4)
这通常通过某种形式的Attached Property或(Blend) Behavior处理。
例如,MVVM Light包含一个EventToCommand Behavior,它允许您将任何事件路由到XAML中的ICommand
,而不添加任何代码。
答案 2 :(得分:3)
关于Commanding和Binding的全部内容。但我会鼓励你更好地使用一个为你提供管道的框架。如果您想要查看第一个策略,可以使用MVVM Light建议Reed。但是,如果您希望ViewModel采用第一种方法(我个人发现更容易理解),那么我建议您使用Caliburn Micro。
无论如何,如果你想要进行代码隐藏清理,你最终会使用Event to Command或Interactivity Library(来自Blend SDK)。