MVVMLight EventToCommand和传递事件参数

时间:2018-11-12 22:13:22

标签: c# wpf xaml mvvm-light

我在StackPanel上有一个鼠标滚轮互动触发器:

 <i:Interaction.Triggers>
         <i:EventTrigger EventName="MouseWheel">
               <cmd:EventToCommand Command="{Binding DataContext.PreviousWeekCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
                                             PassEventArgsToCommand="True"/>
         </i:EventTrigger>
</i:Interaction.Triggers>

,它可与PreviousWeekCommand配合使用,如下所示(摘要):

_previousWeekCommand = new RelayCommand<object>(param => ShiftDays(-7), param => (true));

PassEventArgsToCommand在那里,因为我试图将其切换到另一个命令,该命令将检测用户是否向上或向下滚动。问题是,经过大量搜索之后,我仍然不知道如何构造用于处理args的命令。这是我的东西,但是不起作用:

_scrollWheelCommand = new RelayCommand<MouseEventArgs>(ScrollWheel, can => true);

然后是ScrollWheel声明:

public void ScrollWheel(MouseEventArgs args)

问题是,当我断点该方法时,我再也无法使用它。我也不知道我是否以正确的方式路由参数。

编辑:哦,我没有任何错误。

1 个答案:

答案 0 :(得分:1)

在声明MouseWheelEventArgs时,尝试使用MouseEventArgs代替RelayCommand。参数类型应与事件匹配,以便事件起作用。