与えられた:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.CommandBindings>
<CommandBinding Command="Cut"
Executed="CommandBinding_Executed"/>
</Grid.CommandBindings>
<TextBox x:Name="WpfTextBox"
VerticalAlignment="Center"
Text="Hello there" />
<WindowsFormsHost Grid.Column="1"
VerticalAlignment="Center">
<wf:TextBox x:Name="WinFormsTextBox"
Text="Hello there" />
</WindowsFormsHost>
</Grid>
Ctrl+Xを押すと発火しWinFormsTextBox
ますCommandBinding_Executed
が、 にいるときは発火しませんWpfTextBox
。
WpfTextBox
forの振る舞いをしたいですWinFormsTextBox
。つまり、コマンドは、何もフォーカスがない場合にのみ起動する必要があります。これは、グローバル ビュー コマンドなどのように機能する必要があります。
注: コマンドのイベントにハンドラーを追加することは、 ( +が-に設定されている場合、テキストがカットされないことを意味する)CanExecute
で何かが発生するのを防ぐか、通常どおり実行するのに役立つだけです。WinFormsTextBox
CtrlXe.CanExecute
true
注 2: カットは単なる例です。任意のコマンド バインディングで機能するソリューションが必要です。
注 3: ListView などのように、フォーカスがある場合、コマンドは別のコントロールから起動できる必要があります。内部にフォーカスのある TextBox がない限り (編集モードを考えてください)。
メソッドに特定の処理を追加する必要があることを受け入れたくありませんCommandBinding_Executed
。でも、C'est la vie。