我有一个通用的Windows Phone应用程序(从空白应用程序模板开始)由一个主页和三个辅助页面组成。其中导航在这些中按预期工作(归功于,这个msdn page )。

问题我运行的是,当在主页上时,当用户按下硬件后按钮时,我的应用程序将放入后台,但我的应用程序的卡仍保留在任务切换器中。无论调试器是否附加,都会发生这种情况。

我在一个基于Pivot App(WP)模板的新项目中尝试了这个,我看到了同样的问题。

我想在用户从主页上按下时“关闭”我的应用程序,以便它不再在任务切换器中。我需要手动做些什么吗?

有帮助吗?

解决方案

您可以使用application.current.exit()退出您的应用程序;在下面的硬件禁止上。

public MainPage()
{
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}

private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    /* When you don't know the namespace you can use this code instead of the lower

    string[] Namespace = Frame.CurrentSourcePageType.FullName.Split('.');
    if (!e.Handled && Frame.CurrentSourcePageType.FullName == Namespace[0] + ".MainPage")
            Application.Current.Exit();
    */
    if (!e.Handled && Frame.CurrentSourcePageType.FullName == "NAMESPACE.MainPage")
        Application.Current.Exit();
}
.

我希望这个工作

问候, 基督徒

其他提示

这就是我最终实现它的方式,来自User2799780和Romasz的指针,虽然我不是100%确定我不是编码处理程序的双倍(UN)。取决于每个导航是否始终存在导航,我猜。

编辑:我已被提醒(参见注释),当暂停时,一个应用程序会收到onnavigatedfrom事件,但在恢复时,它将不会看到一个onnavigatedto事件,导致处理程序不在这种情况。以下实施可能受到此错误的影响

protected override async void OnNavigatedTo(NavigationEventArgs e)
{
    // When we're on this page, pressing Back should close the app
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}

protected override async void OnNavigatedFrom(NavigationEventArgs e)
{
    // When we leave this page, pressing Back should no longer close the app
    Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
}

private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    if (!e.Handled)
    {
        Application.Current.Exit();
    }
}
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top