MVVMLight EventToCommand и передача аргументов события - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть триггер интерактивности колесика мыши на 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 существует, потому что я пытаюсь переключить это на другую команду, которая обнаружит, прокручивал ли пользователь вверх или вниз. Проблема в том, что после долгих поисков я все еще не могу понять, как структурировать команду для работы с аргументами. Вот что у меня есть, но оно не работает:

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

и затем это объявление ScrollWheel:

public void ScrollWheel(MouseEventArgs args)

Проблема в том, что я никогда не получаю этот метод, когда использую его точку останова. Я также не знаю, правильно ли я маршрутизирую аргументы.

РЕДАКТИРОВАТЬ: О, и я не получаю ошибок.

1 Ответ

0 голосов
/ 13 ноября 2018

Попробуйте использовать MouseWheelEventArgs вместо MouseEventArgs при объявлении вашего RelayCommand. Чтобы параметр работал, тип параметра должен соответствовать событию.

...