Как подавить операции вырезания, копирования и вставки в TextBox в WPF? - PullRequest
6 голосов
/ 16 июня 2010

Я хочу отключить операции вырезания, копирования и вставки в текстовом поле.

Я не хочу, чтобы пользователь выполнял какие-либо из этих операций с помощью клавиатуры или из контекстного меню по умолчанию в текстовом поле.

Пожалуйста, дайте мне знать, как я могу ограничить эти операции?

1 Ответ

9 голосов
/ 16 июня 2010

Вы можете сделать это довольно легко, используя перенаправленное событие CommandManager.PreviewCanExecute.В вашем XAML вы бы поместили следующее в ваш элемент TextBox.Это будет применяться к CTL + V и т. Д., А также к контекстному меню или любым кнопкам, которые вы, возможно, сопоставили с этими командами, так что это очень эффективно.

<TextBox CommandManager.PreviewCanExecute="HandleCanExecute" />

Затем в своем коде добавьте HandleCanExecuteметод, который отключает команды.

private void HandleCanExecute(object sender, CanExecuteRoutedEventArgs e) {

    if ( e.Command == ApplicationCommands.Cut ||
         e.Command == ApplicationCommands.Copy ||
         e.Command == ApplicationCommands.Paste ) {

        e.CanExecute = false;
        e.Handled = true;

    }

}
...