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



我试图理解这个概念,但它一直在躲避我。

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

在我的视图中,我想不惜一切代价避免代码隐藏。我想将诸如"PreviewMouseDown"之类的事件从视图中解耦,并让它们触发ViewModel中的命令。

有人能给我一些关于如何做到这一点的基本指导吗?

摘要:

View(PreviewMouseDown)->调用ViewModel中的命令(MyPreviewMousDownCommand)

感谢

冒着被否决的风险,我不认为这是世界上最糟糕的事情

public void PreviewMouseDown(Object sender, RoutedEventArgs e)
{
    var viewModel= (MyViewModel)DataContext;
    if (viewModel.MyCommand.CanExecute(null))
        viewModel.MyCommand.Execute(null);
}

这通常通过某种形式的附加属性或(混合)行为来处理。

例如,MVVM Light包含一个EventToCommand Behavior,它允许您将任何事件路由到XAML中的ICommand,而不添加代码隐藏。

这一切都是关于命令和绑定的。但我鼓励您更好地使用一个为您提供管道的框架。如果你想要View first策略,你可以按照Reed的建议使用MVVM Light。但是,如果你想要ViewModel优先的方法(我个人认为这更容易理解),那么我建议你使用Caliburn Micro。

无论如何,如果你想清理代码,你最终会使用事件到命令或交互库(来自Blend SDK)。

最新更新