鉴于其焦点:WPF命令触发,尽管在文本框的WinForms
<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
为WinFormsTextBox
的行为。即该命令只能在没有焦点时触发 - 它应该像全局视图命令或其他东西一样工作。
注:添加一个处理程序命令的CanExecute
事件仅艾滋病,或是防止任何从发生的WinFormsTextBox
(按Ctrl + X当e.CanExecute
设置为true
完全吞噬 - 这意味着没有文字显示) ,或者正常运行。注意2:Cut只是一个例子,我想要一个可以用于任何命令绑定的解决方案。注意3:命令应该能够从另一个控件触发,如果它有焦点 - 就像一个ListView或其他东西。除非它有一个TextBox,它有焦点(认为编辑模式)。
我不确定任何事情都可以完成,我不想接受在CommandBinding_Executed
方法中添加特定的处理。但是,C'est la vie。
我不希望在任一TextBox上发生该命令。它应该发生在任何TextBox之外。对不起,我看到这个例子有点误导,我会尝试编辑它。 – Locdarb
我的实际最终目标是让代码中逻辑定义的命令具有上下文,但是会有一种装饰器UI来显示或说出命令将执行什么以及执行什么操作。对不起,这个答复的通用性,但我希望这可以帮助你看到我想要做什么! 我想我可能不得不放弃使用CommanBindings或WinForms。 – Locdarb
那么,据我所知,你想在特定的UI范围内激活一个命令,但不希望它在该范围内的特定控件上处理。如果这是你真正想要的,那么它有点复杂。可以肯定的是,当您想要在UI范围内全局启用命令时,CommandBindings是一种方法。而且这个问题与WinForms无关。我建议你仔细看看WPF指令系统来理解这里的问题以及为什么这种行为是正常的。 – Ucodia