鉴于:
<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+ XinWinFormsTextBox
会CommandBinding_Executed
触发,但在WpfTextBox
.
我希望有WpfTextBox
for的行为WinFormsTextBox
。即命令应该只在没有焦点时触发 - 它应该像全局视图命令或其他东西一样工作。
注意:向命令的CanExecute
事件添加处理程序仅有助于防止任何事情发生WinFormsTextBox
(当设置为- 时, Ctrl+X被完全吞没,意味着没有文本被剪切),或者正常执行。e.CanExecute
true
注意 2:Cut 只是一个示例,我想要一个适用于任何命令绑定的解决方案。
注意 3:该命令应该能够从另一个控件触发,如果它有焦点 - 比如 ListView 或其他东西。除非它有一个在其中有焦点的文本框(想想编辑模式)。
我不确定是否真的可以做任何事情,我不想接受必须在CommandBinding_Executed
方法中添加特定处理。但是,C'est la vie。