2009-06-02 6 views

Répondre

40

Couper, Copier et Coller sont les commandes les plus courantes utilisées toute application,

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

dans le code de zone de texte ci-dessus, nous pouvons limiter ces commandes en cas PrviewExecuted de CommandManager classe

et ajouter du code derrière sous le code et votre travail est fait

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

Je pense que je dois aussi mettre le contextmenu à null – Sauron

+0

C'est parfait, si u désactiver le menu contextuel –

+1

Je suggère à tout le monde de l'utiliser sous la forme suivante: 'e.Command == ApplicationCommands.Cut', au lieu de lancer et de s'appuyer sur une chaîne qui pourrait changer en raison de la localisation. – VitalyB

13

la méthode commandName ne fonctionnera pas sur un système avec OS japonais comme commandName == « Coller » wi comparision Je vais échouer. J'ai essayé l'approche suivante et cela a fonctionné pour moi. De plus, je n'ai pas besoin de désactiver le menu contextuel manuellement.

Dans le fichier XAML:

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

Dans le code sous-jacent:

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