我希望禁用WPF TextBox中的所有默认快捷键,例如Ctrl + A、Ctrl + V、Ctrl + C等。这是否可行?在我看来,这些快捷键似乎是在
KeyDown
事件之前执行的。KeyDown
事件之前执行的。public Window1()
{
InitializeComponent();
CommandManager.AddPreviewCanExecuteHandler(_textBox, _canExecute);
}
private void _canExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = false;
e.Handled = true;
}
上述代码将防止文本框声称它可以处理任何命令。您可以通过检查EventArgs
来有选择性地选择要禁用的命令。或者您也可以在XAML中完成此操作:
<TextBox x:Name="_textBox">
<TextBox.CommandBindings>
<CommandBinding Command="ApplicationCommands.Copy" CanExecute="_canExecute"/>
</TextBox.CommandBindings>
</TextBox>
在这里,我们只是禁用了复制命令的执行。 Control-C将不起作用,上下文菜单或主菜单也是如此。实际上,如果焦点在 TextBox
中,任何执行复制命令的控件都将被禁用。