我有一个带有一些全局按键操作的uwp应用程序。我通过订阅两组不同的事件来做到这一点:
CoreWindow.CharacterReceived (for text keypresses), and
MainPage.KeyDown (for escape, arrow keys, enter, etc.)
但我的应用程序也有一些TextBoxes。当其中一个有焦点时,我想在几乎所有情况下禁用上述内容。 (箭头键和制表符有时是例外)。
我当然可以通过在TextBox包装器对象中覆盖OnGotFocus和OnLostFocus并跟踪TextBox当前是否具有焦点来实现这一点。
有更好的方法吗?
编辑:我找到了FocusManager.GetFocusedElement()。这是一种改进,但仍然感觉不理想。
答案 0 :(得分:0)
也许您可以使用FocusManager.GetFocusedElement()
并检查返回的元素是否为TextBox
类型。因此,您应该向CoreWindow.CharacterReceived
和MainPage.KeyDown
事件处理程序添加以下内容:
EventHandler(parameters)
{
if (FocusManager.GetFocusedElement() is TextBox)
{
return;
}
// event handling
}