为什么我的 WPF 键向下处理程序没有捕获 CTRL+A?



我有一个带有以下KeyDown事件处理程序的ListView

private void ListViewOnKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.A)
{
Debug.WriteLine("KeyDown is A");
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
ListViewHelper.SelectAll((ListView)sender);
}
}
}

然而,该Debug.WriteLine只被调用,即如果我只按A键,我在输出窗口中看到KeyDown is A 。如果我按CTRL,则会调用该事件,但e.Key显示为LeftCtrl(使用断点(,并按住CTRL并按A,则不会调用该Debug.WriteLine。使用断点进行调试表明,当我按住CTRL时,处理程序仅针对LeftCtrl不断被调用。

它不起作用,因为特殊组合已经由ListBox控件处理。

相反,使用PreviewKeyDown似乎有效。 通过设置e.Handled = true;来注意

最新更新