我在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)
问题是,当我断点该方法时,我再也无法使用它。我也不知道我是否以正确的方式路由参数。
编辑:哦,我没有任何错误。
答案 0 :(得分:1)
在声明MouseWheelEventArgs
时,尝试使用MouseEventArgs
代替RelayCommand
。参数类型应与事件匹配,以便事件起作用。