Реализуйте 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);
}
}