2009-06-02 20 views

Odpowiedz

40

Wytnij, Kopiuj i Wklej są wspólne polecenia używane dowolnej aplikacji

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

w powyższym kodzie pola tekstowego możemy ograniczyć te polecenia w PrviewExecuted przypadku poleceń CommandManager klasy

i w kodzie za dodać poniżej kodu i twoja praca jest wykonywana

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

Myślę, że muszę również ustawić menu kontekstowe na wartość null – Sauron

+0

To idealne, jeśli u wyłącz menu kontekstowe –

+1

Proponuję każdemu, aby używał go w następującej formie: 'e.Command == ApplicationCommands.Cut', zamiast przesyłać i polegać na ciągu, który może ulec zmianie z powodu lokalizacji. Przesłałem propozycję edycji do Prashant – VitalyB

13

Metoda commandName nie zadziała w systemie z japońskim systemem operacyjnym jako commandName == "Wklej" porównanie wi W przeciwnym razie. Próbowałem zastosować następujące podejście i zadziałało to dla mnie. Nie muszę też ręcznie wyłączać menu kontekstowego.

W pliku XAML:

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

W kodzie za:

private void CommandBinding_CanExecutePaste(object sender, CanExecuteRoutedEventArgs e) 
{ 
    e.CanExecute = false; 
    e.Handled = true; 
} 
Powiązane problemy