2009-06-02 56 views
22

WPFのテキストボックスの切り取り、コピー、貼り付けを制限するにはどうしたらいいですか?WPFのテキストボックスをカット、コピー、ペーストに制限する

+0

:背後にあるコードで

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

:XAMLファイルで

。 – shahkalpesh

+3

しかし、私はキーボードからデータを入力したいと思っています – Sauron

答えて

40

切り取り、コピーと貼り付けは、共通のコマンドは、上記のテキストボックスのコードでは、

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

を任意のアプリケーションを使用している私たちは、CommandManagerのクラス

のPrviewExecutedイベントにこれらのコマンドを制限し、コード内の背後にあるコードの下に追加することができますそしてあなたの仕事が行われ

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

私はcontextmenuもnullに設定する必要があると思います。 – Sauron

+0

その完璧な、もしあれば、もしあれば、ラベルを使うことができます。コンテキストメニューを無効にする –

+1

ローカライズのために変更される可能性のある文字列をキャストして頼るのではなく、 'e.Command == ApplicationCommands.Cut'のような形式で使用することをお勧めします。 – VitalyB

13

コマンド名の方法は、コマンド名として日本のOSでシステム上では動作しません==比較ですwiをを「貼り付け」失敗するでしょう。私は次のアプローチを試み、それは私のために働いた。また、コンテキストメニューを手動で無効にする必要はありません。私はWPFについて多くを知らない

private void CommandBinding_CanExecutePaste(object sender, CanExecuteRoutedEventArgs e) 
{ 
    e.CanExecute = false; 
    e.Handled = true; 
} 
関連する問題