【问题标题】:How do I use wpf events from xaml in my viewmodel without code-behind?如何在没有代码隐藏的情况下在我的视图模型中使用来自 xaml 的 wpf 事件?
【发布时间】:2012-10-14 01:17:40
【问题描述】:

在 WPF 中通过 XAML 到我的 viewModel,我想检测画布上的鼠标移动,并仅在按下鼠标左键时对其做出反应。具体来说,我想从我的 viewModel 中的方法中获取事件,包括鼠标位置和鼠标按钮状态。有人可以帮我解决这个问题吗?

我知道我可以在代码隐藏中使用常规 WPF 事件,但在我看来,这样做会“投降”,屈服于 XAML 学习曲线,所以这是最后的手段。

我发现了这个问题,但我买不起 Expression Blend,所以它对我没有帮助: WPF Mouse Over

我看过

<EventTrigger RoutedEvent="Canvas.MouseMove"> . . ., 

但这看起来只适用于动画。

这似乎是人们想要做的常见事情,但我在上面找不到任何东西。

【问题讨论】:

  • 关于您将代码隐藏等同于“投降”,请允许我在这种情况下不同意。这可能是代码背后的有效案例。背后的代码可以使您的视图更容易自动化。除非您的业务逻辑受到影响,否则您可以使用视图代码隐藏中的代码。不要过于复杂。
  • 好吧,让我同意你不同意我的观点。如果这是一个适合代码隐藏的明确案例,那么,是的,我不会投降。我想我的意思是,在不首先寻求仅 XAML 的方式(如果有的话)的情况下诉诸代码隐藏,那将是投降。

标签: wpf events xaml viewmodel


【解决方案1】:

首先:你不需要 Expression Blend,你只需要 SDK

或者如果你看一下 mvvm light framework 还有一个 EventToCommand 行为

【讨论】:

    【解决方案2】:

    您可以创建一个附加的画布行为来接受命令并引发它,您的视图模型将订阅该命令并执行操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 2016-07-11
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多