2017-01-03 3 views
0

私はいくつかのグローバルなキー操作を持つuwpアプリケーションを持っています。TextBoxはキーイベントを処理し、それらを渡さないでください

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

私のアプリにもいくつかのテキストボックスがあります。そのうちの1つにフォーカスがある場合、ほとんどの場合、上記を無効にします。 (矢印キーとタブは時々例外です)。

TextBoxラッパーオブジェクトでOnGotFocusとOnLostFocusをオーバーライドし、TextBoxに現在フォーカスがあるかどうかを確認することで、確かにこれを行うことができます。

良い方法がありますか?

EDIT:FocusManager.GetFocusedElement()が見つかりました。これは改善ですが、それでもなお理想的ではありません。

答えて

0

おそらくFocusManager.GetFocusedElement()を使用して、返された要素のタイプがTextBoxであるかどうかを確認できます。だから、あなたのCoreWindow.CharacterReceivedMainPage.KeyDownイベントハンドラに何かを加えるべきです:

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

    // event handling 
} 
関連する問題