Как отключить ярлыки в текстовом поле WPF
Я хочу отключить все ярлыки по умолчанию в текстовом поле WPF. Ярлыки, как Ctrl + A, Ctrl + V, Ctrl + C etc. Можно ли это сделать?. Мне кажется, что эти ярлыки выполняются до KeyDown
событие
2 ответов
вы можете перехватить нажатия клавиш в PreviewKeyDown
событие. Установите e.Handled
члены true
и это предотвратит фактическую обработку ключей.
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 не будет работать, а также контекстное меню или главное меню. Фактически, любой элемент управления, выполняющий команду Copy, будет отключен, если фокус находится в TextBox
.