如何禁用WPF TextBox中的快捷方式

时间:2009-03-22 15:24:54

标签: wpf textbox keyboard-shortcuts

我想禁用WPF TextBox中的所有默认快捷方式。快捷键如 Ctrl + A Ctrl + V Ctrl + C 等可以这样做吗?在我看来,这些快捷方式是在KeyDown事件

之前执行的

2 个答案:

答案 0 :(得分:3)

您可以拦截PreviewKeyDown事件中的击键。将e.Handled成员设置为true,这将阻止实际处理密钥。

答案 1 :(得分:3)

public Window1()
{
    InitializeComponent();
    CommandManager.AddPreviewCanExecuteHandler(_textBox, _canExecute);
}

private void _canExecute(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = false;
    e.Handled = true;
}

以上内容将阻止TextBox说它可以处理任何命令。您可以通过检查EventArgs来有选择地选择要禁用的命令。或者您可以在XAML中执行此操作:

<TextBox x:Name="_textBox">
    <TextBox.CommandBindings>
        <CommandBinding Command="ApplicationCommands.Copy" CanExecute="_canExecute"/>
    </TextBox.CommandBindings>
</TextBox>

这里我们只是禁止执行Copy命令。 Control-C不起作用,上下文菜单或主菜单也不起作用。实际上,如果焦点位于TextBox

,则将禁用执行“复制”命令的任何控件