当焦点位于 TextBox 类型的元素上时,WPF 会阻止 InputBindings 获取快捷方式
WPF blocking InputBindings for shortcut when the focus is on TextBox kind of element
我需要使用 Ctrl + PageUp/PageDown - previous/next 导航 TabControl 中的选项卡。一切正常,直到 Tab 内有一个 TextBox 控件并且焦点在它上面。那么快捷方式将不起作用。其他组合键可以正常工作,但 PageUp 和 PageDown 不行。
这是我的 Tab 控件:
<TabControl.InputBindings>
<KeyBinding Modifiers="Control"
Key="PageDown"
Command="{Binding Source={StaticResource ShortCutCommands}, Path=TabControlNextItemCommand}"
CommandParameter="{Binding ElementName=TabControl}"/>
<KeyBinding Modifiers="Control"
Key="PageUp"
Command="{Binding Source={StaticResource ShortCutCommands}, Path=TabControlPreviousItemCommand}"
CommandParameter="{Binding ElementName=TabControl}"/>
</TabControl.InputBindings>
有人遇到过类似的问题吗?
我知道使用命令是理想的,但是如果 TextBox
在 KeyBinding
有机会工作之前吃掉那些关键输入,我知道的唯一解决方案是使用 PreviewKeyDown
事件而不是输入绑定。
private void TabControl_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
{
//Invoke command here
}
}
我需要使用 Ctrl + PageUp/PageDown - previous/next 导航 TabControl 中的选项卡。一切正常,直到 Tab 内有一个 TextBox 控件并且焦点在它上面。那么快捷方式将不起作用。其他组合键可以正常工作,但 PageUp 和 PageDown 不行。 这是我的 Tab 控件:
<TabControl.InputBindings>
<KeyBinding Modifiers="Control"
Key="PageDown"
Command="{Binding Source={StaticResource ShortCutCommands}, Path=TabControlNextItemCommand}"
CommandParameter="{Binding ElementName=TabControl}"/>
<KeyBinding Modifiers="Control"
Key="PageUp"
Command="{Binding Source={StaticResource ShortCutCommands}, Path=TabControlPreviousItemCommand}"
CommandParameter="{Binding ElementName=TabControl}"/>
</TabControl.InputBindings>
有人遇到过类似的问题吗?
我知道使用命令是理想的,但是如果 TextBox
在 KeyBinding
有机会工作之前吃掉那些关键输入,我知道的唯一解决方案是使用 PreviewKeyDown
事件而不是输入绑定。
private void TabControl_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
{
//Invoke command here
}
}