MouseDown,PreviewMouseDown等...以及MVVM中的COMMAND绑定

时间:2012-09-04 19:31:38

标签: wpf mvvm binding command mousedown

我正在试图理解这个概念而且它在逃避我。

这背后的一般概念是什么?我知道这是可能的,但我并没有完全按照我的研究/自己的测试项目来完成这项工作。

我希望在我的视图中不惜一切代价避免代码。我想从View中分离诸如“PreviewMouseDown”之类的事件,并让它们在ViewModel中触发一个Command。

有人能给我一些关于如何实现这个目标的基本指导吗?

要点:

查看(PreviewMouseDown) - >在ViewModel中调用命令(MyPreviewMouseDownCommand)

谢谢

3 个答案:

答案 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)

关于CommandingBinding的全部内容。但我会鼓励你更好地使用一个为你提供管道的框架。如果您想要查看第一个策略,可以使用MVVM Light建议Reed。但是,如果您希望ViewModel采用第一种方法(我个人发现更容易理解),那么我建议您使用Caliburn Micro

无论如何,如果你想要进行代码隐藏清理,你最终会使用Event to Command或Interactivity Library(来自Blend SDK)。