在每个ICommandSource
上,您可以设置CommandTarget
属性。如果是RoutedUICommand
s,则表示将使用此目标而不是KeyBoard.FocusedElement
。
因此,对于示例,请执行以下命令:
public static class MyCommands
{
static MyCommands()
{
Test = new RoutedUICommand("Test Command", nameof(Test), typeof(MyCommands));
Test.InputGestures.Add(new KeyGesture(Key.Escape));
}
public static RoutedUICommand Test { get; }
}
所以CommandTarget可以像这样设置:
<Button Command="{x:Static local:MyCommands.Test}" CommandTarget="{Binding }" />
但是,如果用户按下转义按钮,则KeyBoard.FocusedElement
将用作CommandTarget
。
如何通过CommandTarget
激活RoutedUICommand
时更改KeyGesture
?