2017-01-03 62 views
0

我有一個uwp應用程序與一些全局按鍵處理。我通過訂閱兩組不同的事件來做到這一點:TextBox處理關鍵事件,不要通過它們

CoreWindow.CharacterReceived (for text keypresses), and 
MainPage.KeyDown (for escape, arrow keys, enter, etc.) 

但我的應用程序也有一些TextBoxes。當其中一個焦點時,我想在幾乎所有情況下禁用上述內容。 (箭頭鍵和標籤有時是例外)。

我當然可以通過在我的TextBox包裝器對象中重寫OnGotFocus和OnLostFocus來實現這一點,並跟蹤TextBox當前是否具有焦點。

有沒有更好的方法?

編輯:我找到了FocusManager.GetFocusedElement()。這是一個改進,但仍然不理想。

回答

0

也許你可以使用FocusManager.GetFocusedElement()並檢查返回的元素是否爲TextBox類型。所以你應該添加類似於你的CoreWindow.CharacterReceivedMainPage.KeyDown事件處理程序:

EventHandler(parameters) 
{ 
    if (FocusManager.GetFocusedElement() is TextBox) 
    { 
     return; 
    } 

    // event handling 
}