У нас есть элемент управления TextBox как часть большего UserControl.
UserControl имеет MVVMLight RelayCommand, связанный с событием KeyDown:
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding KeyDownCommand}" PassEventArgsToCommand="True"/>
</i:EventTrigger> </i:Interaction.Trigger>
Когда TextBox имеет фокус, отображаются события KeyDown для клавиши Ctrl , но не Ctrl + V .
Я добавил обработчик для KeyDown для TextBox в code-behind:
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;
}
Аналогичный результат - событие KeyDown для клавиши Ctrl обрабатывается, но Ctrl + V не отображается.
Сообщение всплывает через другие обработчики, но никогда не помечается как обработанное.
Любые идеи о том, почему TextBox не получает Ctrl + V ?
Спасибо за любые идеи.
Обновление: О, ради Пита ... Я добавил обработчик KeyUp в коде позади, и там появляется Ctrl + V . Однако Ctrl + V появляется в обработчике KeyDown, если источником KeyDown является другой элемент управления (например, содержащий ScrollViewer).
Обновление второго: В новом разреженном проекте я убедился, что обработчик TextBox.KeyDown НЕ вызывается для Ctrl + V , пока TextBox.KeyUp вызывается для Ctrl + V . Можно ли «передать» событие Ctrl + V другому TextBox?