我需要在 WPF 中使面板可聚焦,以便它像任何其他可聚焦控件一样捕获键盘事件:
KeyDown
或 KeyUp
事件在面板级别引发 我实验过
FocusManager.IsFocusScope="True"
在面板和 myPanel.Focus()
返回 true
但仍然没有调用 Panel KeyUp 事件处理程序。我错过了什么吗?
最佳答案
经过更多调查,面板具有键盘焦点并保持它直到按下箭头键或 TAB(启动焦点循环)。
我刚刚为 KeyDown
添加了一个处理程序带有“e.Handled = true;”的事件现在一切正常。
总而言之,要有一个可聚焦的面板:
FocusManager.IsFocusScope="True"
到面板 myPanel.KeyDown += new KeyEventHandler( delegate(object sender, KeyEventArgs e) { if (e.Key == Key.Left || e.Key == Key.Up || e.Key == Key.Right || e.Key == Key.Down || e.Key == Key.Tab) e.Handled = true; } );
最后用
myPanel.Focus();
给它一个焦点.
关于wpf - WPF 中的可聚焦面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1721458/