2009-06-02 7 views

Antwort

40

Ausschneiden, Kopieren und Einfügen sind die häufigsten Befehle jede Anwendung verwendet,

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

in obigen Code Textbox wir diese Befehle in PrviewExecuted Falle Befehlsmanager Klasse

und in nachfolgenden Code Code hinter hinzufügen beschränken und Ihre Arbeit erledigt ist

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

Ich denke, ich muss auch das Kontextmenü auf null setzen. – Sauron

+0

Es ist perfekt, wenn Ich deaktiviere das Kontextmenü –

+1

Ich empfehle jedem, es in der folgenden Form zu verwenden: 'e.Command == ApplicationCommands.Cut', statt auf eine Zeichenfolge zu werfen und sich darauf zu verlassen, die sich aufgrund der Lokalisierung ändern könnte. Ich habe Prashant einen Bearbeitungsvorschlag unterbreitet – VitalyB

13

die command~~POS=TRUNC Methode wird nicht mit japanischen OS als command auf ein System hinarbeiten == „einfügen“ wi Vergleich Ich scheitere. Ich habe den folgenden Ansatz versucht und es hat für mich funktioniert. Außerdem muss ich das Kontextmenü nicht manuell deaktivieren.

In der XAML-Datei:

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

Im Code hinter:

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