xel*_*lor 7 c# wpf focus wpf-controls arrow-keys
我有几个控件(按钮,groupboxes等)和一个大的WPF窗口Viewport3D内Border.
视口显示3D场景,我希望箭头键移动其相机.问题:箭头键总是将焦点更改为另一个UIElement.
如何通过箭头键禁用焦点更改并让它们改变相机位置?
没有一些代码来实际测试总是难以回答,因为没有它,我们只是在猜测.无论哪种方式,我都无法对您的特定情况发表评论,但总的来说,如果我们想要在事件中停止某些预定义的操作,那么我们通常会处理该事件并将e.Handled属性设置为true.
看到您已经想要处理KeyDown事件以检测箭头键的使用,那么您可以同时将e.Handled属性设置为true.但是,你应该处理的PreviewKeyDown事件,而不是,因为它发生之前的KeyDown事件,因此更可能有你想要的效果.尝试这样的事情:
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Left || e.Key == Key.Right)
{
// Move your camera here
e.Handled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们希望能够在一组控件之间切换,但不能在同一组控件之间切换箭头键,则当它们处于键盘导航模式时,应该可以设置 KeyboardNavigation.DirectionalNavigation="None"为容器(在本例中为窗口)进行设置。
但是,似乎有一些错误使该解决方案无法正常工作。
设置的解决方法KeyboardNavigation.DirectionalNavigation="Once"虽然有效。
FocusVisualStyle将为当前选定的元素重新加载。| 归档时间: |
|
| 查看次数: |
6078 次 |
| 最近记录: |