我们有一个TextBox控件作为更大的UserControl的一部分 UserControl有一个绑定到KeyDown事件的MVVMLight RelayCommand:
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding KeyDownCommand}" PassEventArgsToCommand="True"/>
</i:EventTrigger> </i:Interaction.Trigger>
当TextBox具有焦点时,可以看到 Ctrl 键的KeyDown事件,但不能看到 Ctrl + V 。
我在代码隐藏中添加了TextBox的KeyDown处理程序:
KeyDown="textBox_KeyDown"
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
System.Diagnostics.Debug.WriteLine(string.Format("textBox_KeyDown Key: {0} Modifier: {1}", e.Key, Keyboard.Modifiers));
e.Handled = false;
}
类似结果 - 处理了 Ctrl 键的KeyDown事件,但 Ctrl + V 未显示。<登记/>
该消息通过其他处理程序冒泡,但从未标记为已处理
关于为什么TextBox没有得到 Ctrl + V 的任何想法?
感谢您的任何见解。
更新:哦,为了Pete的缘故...我在代码隐藏中添加了一个KeyUp处理程序,并且 Ctrl + V 出现在那里。但是,当另一个控件(例如,包含ScrollViewer)是KeyDown的源时, Ctrl + V 会出现在KeyDown处理程序中。 更新第二个:使用一个新的稀疏项目,我验证了TextBox.KeyDown处理程序不会被调用 Ctrl + V ,而为 Ctrl + V 调用TextBox.KeyUp。是否可以将 Ctrl + V 事件“传递”到另一个TextBox?