Сделать текстовое поле WPF ограниченным, вырезать, копировать и вставлять - PullRequest
26 голосов
/ 02 июня 2009

Как можно ограничить вырезание, копирование и вставку текстового поля WPF?

Ответы [ 2 ]

45 голосов
/ 02 июня 2009

Вырезать, Копировать и Вставить - это общие команды, используемые в любом приложении,

<TextBox CommandManager.PreviewExecuted="textBox_PreviewExecuted"
         ContextMenu="{x:Null}" />

в приведенном выше текстовом поле мы можем ограничить эти команды в событии PrviewExecuted класса CommandManager

и в приведенном ниже коде добавьте код ниже, и ваша работа будет выполнена

private void textBox_PreviewExecuted(object sender, ExecutedRoutedEventArgs e)
{
     if (e.Command == ApplicationCommands.Copy ||
         e.Command == ApplicationCommands.Cut  || 
         e.Command == ApplicationCommands.Paste)
     {
          e.Handled = true;
     }
}
16 голосов
/ 22 июня 2010

Метод commandName не будет работать в системе с японской ОС, так как сравнение commandName == «Вставить» не удастся. Я попробовал следующий подход, и он работал для меня. Также мне не нужно отключать контекстное меню вручную.

В файле XaML:

<PasswordBox.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Paste"
    CanExecute="CommandBinding_CanExecutePaste"></CommandBinding>
</PasswordBox.CommandBindings>

В коде позади:

private void CommandBinding_CanExecutePaste(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = false;
    e.Handled = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...