Как сделать так, чтобы текстовое поле WPF вырезалось, копировалось и вставлялось с ограничениями?
Сделать текстовое поле WPF ограниченным для вырезания, копирования и вставки
comment
Я мало знаю о WPF. Вместо этого вы можете использовать метку (которая не позволит вам вырезать/копировать/вставить.
- person shahkalpeshp   schedule 02.06.2009
comment
Но я хочу, чтобы пользователь вводил данные с клавиатуры.
- person Sauron   schedule 02.06.2009
Ответы (2)
Вырезать, Копировать и Вставить — общие команды, используемые любым приложением,
<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;
}
}
person
Prashant Cholachagudda
schedule
02.06.2009
Я думаю, мне также нужно установить для контекстного меню значение null.
- person Sauron; 02.06.2009
Это идеально, если вы отключите контекстное меню
- person Prashant Cholachagudda; 02.06.2009
Я предлагаю всем использовать его в следующей форме:
e.Command == ApplicationCommands.Cut
, вместо того, чтобы приводить и полагаться на строку, которая может измениться из-за локализации. Я отправил предложение по редактированию Прашанту.
- person VitalyB; 27.09.2011
Я столкнулся с той же проблемой в моем приложении Windows Phone 8.1. В приложении Windows Phone нет CommandManager .. кто-нибудь может помочь?
- person Tasnim Fabiha; 26.02.2017
Метод commandName не будет работать в системе с японской ОС, так как сравнение commandName=="Paste" не удастся. Я попробовал следующий подход, и он сработал для меня. Также мне не нужно отключать контекстное меню вручную.
В файле 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;
}
person
Debashis Panda
schedule
22.06.2010