我有一个通用的Windows Phone应用程序(从Blank App模板启动),包含一个MainPage和三个辅助页面。这些中的导航按预期工作(部分归功于this MSDN page)。
我遇到的问题是,当在MainPage上,当用户按下硬件后退按钮时,我的应用程序将被置于后台,但我的应用程序的卡仍保留在任务切换器中。无论调试器是否附加,都会发生这种情况。
我在基于Pivot App(WP)模板的新项目中尝试了这个,我看到了同样的问题。
我想"关闭"当用户从MainPage按下Back时,我的应用程序,以便它不再在任务切换器中。有什么我需要手动做的吗?
答案 0 :(得分:2)
您可以使用Application.Current.Exit()退出您的应用;在下面的HardwareButtons_BackPressed函数中。
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();
}
我希望这有效
的问候, 基督教
答案 1 :(得分:0)
这是我最终实现它的方式,使用来自user2799780和Romasz的指针,虽然我不是100%确定我不是双重(非)注册处理程序。 这取决于每个NavigatedTo是否总有一个NavigatedFrom,我想。
编辑:我被提醒(请参阅评论),当被暂停时,应用程序会收到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();
}
}