0

我在 Windows Phone 7/8 应用程序的应用程序关闭/停用方法中显示了一个 MessageBox。它用于警告用户由于应用程序正在关闭而禁用活动计时器。App Closing/Deactivated 事件非常适合这一点,因为将逻辑放在所有应用程序页面中将是一个杀手 - 太多的页面和导航路径。这工作得很好 - 消息框在 WP7 中显示 OK。

我也知道WP8 API 的重大变化。那里明确指出,激活和启动中的 MessageBox.Show 将导致异常。

问题是在 WP8 中,消息框不会在应用程序关闭时显示。代码无异常执行,但没有出现任何消​​息。

PS 我在 MS WP Dev 论坛上问过这个问题,但显然没人知道。

4

2 回答 2

1

将 msgBox 代码从应用程序关闭事件中移到您的主页代码隐藏中。覆盖后退按键事件并将您的代码放在那里。这是在 7.x 上完成的:

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
        {
            if (MessageBox.Show("Do you want to exit XXXXX?", "Application Closing", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
            {
                // Cancel default navigation
                e.Cancel = true;
            }
        }

仅供参考 - 在 WP8 上,您似乎必须将 MsgBox Show 分派到新线程。

这会在应用程序真正开始在事件模型中关闭之前提示用户。如果用户接受后退键,则允许发生,否则取消。您不允许覆盖主页按钮按下,它必须始终立即进入主屏幕。您应该查看后台代理以通过挂起/恢复来保留您的计时器代码。

于 2012-11-16T18:55:29.983 回答
0

在 RootFrame 上注册 BackKeyPress 事件。

RootFrame.BackKeyPress += BackKeyPressed;
private void BackKeyPressed(object sender, CancelEventArgs e)
    {
        var result = (MessageBox.Show("Do you want to exit XXXXX?", "Application Closing", MessageBoxButton.OKCancel));
        if (result == MessageBoxResult.Cancel)
        {
            // Cancel default navigation
            e.Cancel = true;
        }
}
于 2013-05-06T13:59:46.607 回答