我有一个简单的输入表单,由单个文本框和“确定/取消”按钮组成。为了节省用户一些点击,我在显示页面时将焦点带到文本框,以便弹出键盘。此时,我希望“后退”按钮的行为与取消相同,如果按下则导航回来,但实际上它做了什么,它只是从文本框中移除焦点,甚至没有触发BackKeyPress事件。在下一次按下时它会向后移动,但这是两次点击而不是一次。
所以我有两个问题
答案 0 :(得分:2)
您可以做的是处理文本框的KeyUp方法。按下某个键时,检查它是否为硬件返回键。在我的测试中,硬件返回键的PlatformKeyCode
为27.我不确定这是否会在硬件设备之间发生变化。但是,如果没有,您可以执行以下操作:
private void TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
if(e.PlatformKeyCode == 27)
{
//Navigation code
}
}
至于这是否是一个好主意,我不确定。对于屏幕键盘,后退键的主要功能是关闭键盘。这是用户在各种应用程序中最常体验的内容,因此这是他们对您的期望。但是,由于你是自动显示SIP,我猜你可能认为它几乎是布局本身的一部分。我在UI Guidelines中看不到任何关于它的内容,但如果我错过了什么,你应该阅读。
答案 1 :(得分:1)
您是否检查过是否可以覆盖OnBackKeyPressed方法?
根据应用程序认证准则,您可以使用Back键进行操作:
5.2.4使用后退按钮
为了保持一致的用户体验,“后退”按钮只能用于应用程序中的向后导航。
一个。从应用程序的第一个屏幕按“后退”按钮必须退出应用程序。
湾按“返回”按钮必须将应用程序返回到上一页。
℃。如果当前页面显示上下文菜单或对话框,则按“返回”按钮必须关闭菜单或对话框并取消向后导航到上一页。
d。对于游戏,当在游戏过程中按下后退按钮时,游戏可以选择呈现暂停上下文菜单或对话框或者将用户导航到先前的菜单屏幕。在暂停的上下文菜单或对话框中再次按“返回”按钮可关闭菜单或对话框
此SO question也可能有用....
我将同意keyboardP,你不应该真正覆盖SIP与硬件后退按钮的交互方式的默认行为,但你总是可以提交它,看看会发生什么:)