2014-06-27 60 views
3

我有一個WPF窗口,有一些控件(按鈕,組框等)和一個大的Viewport3DBorder內。如何通過箭頭鍵禁用焦點更改

視口顯示3D場景,我希望箭頭鍵可以移動相機。問題:方向鍵始終將焦點轉移到另一個UIElement

如何禁用焦點更改的箭頭鍵,讓他們改變相機的位置呢?

回答

5

如果沒有一些代碼進行實際測試,它總是很難回答,因爲沒有它,我們只是在猜測。無論如何,我無法評論您的具體情況,但總的來說,如果我們想要停止事件中發生的某些預定義操作,那麼我們通常會處理該事件並將e.Handled屬性設置爲true

由於您已經想要處理KeyDown事件以檢測箭頭鍵的使用情況,因此您可以同時將e.Handled屬性設置爲true。但是,您應該處理PreviewKeyDown事件,因爲它發生在之前的事件,因此更有可能產生您需要的效果。嘗試是這樣的:

private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Left || e.Key == Key.Right) 
    { 
     // Move your camera here 
     e.Handled = true; 
    } 
} 
+0

謝謝!它工作得很好! – xelor

1

您可以嘗試

KeyboardNavigation.TabNavigation = "Local" 

不轉移您的焦點Viewport3D之外。

4

如果我們希望能夠在鍵盤導航模式下通過同一組控件在控件之間進行切換但不能使用箭頭鍵,應該是我們可以爲容器(在本例中爲窗口)設置KeyboardNavigation.DirectionalNavigation="None"

但是,似乎有一些bug停止工作的解決方案。

儘管如此,設置KeyboardNavigation.DirectionalNavigation="Once"的解決方法仍然有效。

  • 我注意到的唯一警告是,按下箭頭鍵FocusVisualStyle重新加載當前選定的元素。