使用交互触发器时获取EventArgs

时间:2012-11-16 18:12:23

标签: wpf xaml mousewheel interaction eventtrigger

我正在使用这种方式从XAML中捕获事件:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseWheel">
        <ei:CallMethodAction MethodName="ChangeValue" TargetObject="{Binding DataContext}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

这种方式效果很好,我可以在我的代码中触发ChangeValue函数。 但我想知道我的ChangeValue函数上的鼠标滚轮方向(向上或向下)。 有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用MVVM LightEventToCommand,其PassEventArgsToCommand属性。然后,定义一个接收事件args作为参数的命令,而不是方法。你的XAML应该是这样的:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseWheel">
        <cmd:EventToCommand Command="{Binding ChangeValueCommand}"
                            PassEventArgsToCommand="True" />
    </i:EventTrigger>
</i:Interaction.Triggers>

答案 1 :(得分:0)

我使用了这里描述的技术:

http://blog.roboblob.com/2010/01/26/binding-ui-events-from-view-to-commands-in-viewmodel-in-silverlight-4/

在那里发布的博客非常清晰易懂,特别是如果您已经拥有一些WPF / Silverlight体验。当我实现这个版本的Event-&gt; Command模式时,我没有遇到任何问题。

此功能也可用于“内置”,用于MVVMLight等框架。

实质上,您为要使用的每个事件创建一个Command(ICommand)。