2009-06-02 8 views

Respuesta

40

Cortar, Copiar y Pegar son los comandos comunes que se utilizan cualquier aplicación,

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

en el código de cuadro de texto anterior podemos restringir estos comandos en PrviewExecuted caso de Administrador de comandos de clase

y en el código detrás de añadir a continuación el código y su trabajo está hecho

private void textBox_PreviewExecuted(object sender, ExecutedRoutedEventArgs e) 
{ 
    if (e.Command == ApplicationCommands.Copy || 
     e.Command == ApplicationCommands.Cut || 
     e.Command == ApplicationCommands.Paste) 
    { 
      e.Handled = true; 
    } 
} 
+2

Creo que también necesito configurar el menú contextual como nulo. – Sauron

+0

Es perfecto, si Deshabilitar el menú contextual –

+1

Sugiero que cualquiera lo use de la siguiente forma: 'e.Command == ApplicationCommands.Cut', en lugar de crear y confiar en una cadena que podría cambiar debido a la localización. Envié una sugerencia de edición a Prashant – VitalyB

13

El método commandName no funcionará en un sistema con sistema operativo japonés como el comandoName == "Pegar" la comparación wi fallaré Probé el siguiente enfoque y funcionó para mí. Además, no necesito deshabilitar el menú contextual manualmente.

En el archivo XAML:

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

En el código subyacente:

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