我有一个WPF窗口,其中包含一些控件(按钮,组框等),以及Viewport3D中的一个大Border

视口(viewport)显示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;
    }
}

关于c# - 如何通过箭头键禁用焦点更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24447602/

10-12 03:59