Реализуйте Ctrl+ Shift+MouseOver на кнопке в MVVM

Я пытаюсь реализовать ctrl+shift+mouseover на кнопке в wpf, mvvm. Я делаю что-то вроде:

<Button.InputBindings>
    <KeyBinding Gesture="Ctrl+Shift" Command="{Binding KeyCommand}" 
CommandParameter="{Binding Mode=OneWay, RelativeSource={RelativeSource Self}}" 
/>
</Button.InputBindings>

или что-то вроде:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseEnter">
      <i:InvokeCommandAction Command="{Binding MouseOverCommand}" />
    </i:EventTrigger>
 </i:Interaction.Triggers>

Я не могу получить требуемое поведение, так как Mouse Gesture не поддерживает событие MouseEnter. Я пытался реализовать таким образом, как:

Step 1.- Through keybinding setting a variable in the viewmodel.

Step 2.- Accessing that variable's value on MouseEnter and do whatever in the command.

Любая помощь приветствуется.

1 ответ

Вы можете реализовать прикрепленное поведение, которое подключает обработчики событий к MouseEnter а также MouseLeftButtonDown события и проверьте, нажаты ли клавиши Ctrl и Shift к моменту возникновения события, например:

private void OnMouseEnter(object sender, MouseEventArgs e)
{
    if ((Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
        && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
    {
        TheCommand.Execute(null);
    }
}
Другие вопросы по тегам