テキストボックスのコピー/貼り付け/切り取り操作を無効にする必要があります。この目的のために、Textboxを継承してMyTextboxを作成し、KeyDownイベントを次のコードでオーバーライドしました。
if (!(e.Key == Key.Back || e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Delete || e.Key == Key.Tab))
{
if ((e.Key == Key.C || e.Key == Key.X || e.Key == Key.V) &&
(Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
e.Handled = true;
}
}
次に、このテキストボックスを使用しました。このテキストボックスは、コピー/貼り付け/切り取り操作を防止するようになりました。
ビヘイビアーを使用してこれと同じ目的を達成しようとしています。この目的のために、ビヘイビアーを作成しました。コードは以下の通りです
public class MyTextboxBehavior : Behavior<TextBox>
{
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.KeyDown += new KeyEventHandler(AssociatedObject_KeyDown);
}
private void AssociatedObject_KeyDown(object sender, KeyEventArgs e)
{
if (!(e.Key == Key.Back || e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Delete || e.Key == Key.Tab))
{
if ((e.Key == Key.C || e.Key == Key.X || e.Key == Key.V) &&
(Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
e.Handled = true;
}
}
}
}
この動作を以下のようにテキストボックスに追加しました
<TextBox>
<Interactivity:Interaction.Behaviors>
<CustomControl:MyTextboxBehavior></CustomControl:MyTextboxBehavior>
</Interactivity:Interaction.Behaviors>
</TextBox>
なぜこれが機能しないのか誰かが知っていますか?