3

我试图理解这个概念,但它让我难以理解。

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

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

谁能给我一些有关如何完成此任务的基本指导?

概括:

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

谢谢

4

3 回答 3

15

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

public void PreviewMouseDown(Object sender, RoutedEventArgs e)
{
    var viewModel= (MyViewModel)DataContext;
    if (viewModel.MyCommand.CanExecute(null))
        viewModel.MyCommand.Execute(null);
}
于 2012-09-04T19:36:24.793 回答
4

这通常通过某种形式的Attached Property(Blend) Behavior来处理。

例如,MVVM Light 包含一个EventToCommand 行为,它允许您将任何事件路由到ICommandXAML 中,而无需添加任何代码。

于 2012-09-04T19:33:38.717 回答
3

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

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

于 2012-09-04T19:37:15.600 回答