Windows Phone - 如何在MessageBox打开时限制硬件返回

时间:2014-02-14 06:34:46

标签: wpf windows windows-phone-7 windows-phone-8

我正在开发Windows Phone应用,需要实现以下功能: -

应用中已登录部分。如果用户空闲5分钟,MessageBox应该说“会话超时。请再次登录”。使用消息框上的“确定”按钮,然后单击“确定”按钮,用户将退出应用程序并登录页面。

这已成功实施,但如果用户单击Windows Phone的“硬件后退”按钮,则消息框将消失,即使5分钟后用户仍可访问该应用程序。

请告诉我如何在MessageBox处于打开状态时限制硬件返回,并且消息框应保持活动状态,直到用户单击“确定”按钮为止。

提前致谢。

此致 Jatin Juneja

3 个答案:

答案 0 :(得分:0)

只需在页面上覆盖make this事件。

 protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
            {
                base.OnBackKeyPress(e);
                e.Cancel = true;
            }

e.Cancel = TRUE;抑制后退按键。

答案 1 :(得分:0)

我会关注har07评论并使用MessageBoxReasult,它可以看一个非常简单的示例:

MessageBoxResult result = MessageBox.Show("Session Time Out. Log in again?", "Question", MessageBoxButton.OKCancel);
// code after user click
if (result == MessageBoxResult.OK) NavigationService.Navigate(new Uri("/LoginPage.xaml", UriKind.RelativeOrAbsolute));
else NavigationService.GoBack();

当你显示MessageBox时点击BackButton - 结果将是取消。

上面的代码只是一个简单的例子,需要一些改进 - 这取决于您的导航流程 - 在导航到LoginPage之后,最好清除NavigationStack(删除已登出的上一页)。

答案 2 :(得分:0)

Aman和Romasz所说的是正确的,但不是通过所有这些,你可以这样做:

1-会话到期后,导航到您的登录页面:

NavigationService.Navigate(new Uri("/Login.xaml", UriKind.Relative));

2-现在,您可以显示一个消息框,通知用户有关会话过期的内容,而不必担心用户按下了什么。或者更吸引人/更好看的解决方案是在消息框内但在登录/登录按钮下方的文本框内显示消息。我就是这样做的!