MVVMLight EventToCommand 和传递事件参数
MVVMLight EventToCommand and passing event arguments
我在 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)
问题是,当我断点它时,我从来没有到达这个方法。我也不知道我是否以正确的方式传递参数。
编辑:哦,我没有收到任何错误。
尝试在声明 RelayCommand
时使用 MouseWheelEventArgs
而不是 MouseEventArgs
。参数类型应与事件相匹配才能正常工作。
我在 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)
问题是,当我断点它时,我从来没有到达这个方法。我也不知道我是否以正确的方式传递参数。
编辑:哦,我没有收到任何错误。
尝试在声明 RelayCommand
时使用 MouseWheelEventArgs
而不是 MouseEventArgs
。参数类型应与事件相匹配才能正常工作。