Windows phone 7 当应用程序从墓碑中恢复时,如何防止导航?
我有一个应用程序,当应用程序被删除时,我想在主屏幕上以“新”状态重新启动应用程序 但是默认情况下,wp7框架希望将您导航回您离开的任何页面Windows phone 7 当应用程序从墓碑中恢复时,如何防止导航?,windows-phone-7,Windows Phone 7,我有一个应用程序,当应用程序被删除时,我想在主屏幕上以“新”状态重新启动应用程序 但是默认情况下,wp7框架希望将您导航回您离开的任何页面 如何阻止这种行为?如果没有一些相当大的黑客,你不可能真正做到这一点。这是我个人能想到的唯一方法——可能还有其他方法 从墓碑镇回来时,您将获得一个ApplicationActivated事件。存储一些记住这一点的变量。另外,重置全局状态 使用导航服务。删除返回条目,直到到达第一页 如果可以“重置”主页的状态,请执行此操作。否则,从主页上的OnNavigateT
如何阻止这种行为?如果没有一些相当大的黑客,你不可能真正做到这一点。这是我个人能想到的唯一方法——可能还有其他方法
我强烈建议你重新思考你的应用程序流程——这是一个相当糟糕的魔咒。呃,这就是我想到的,就像沙哈尔所说的,它是黑客的(但确实有效): 在App.xaml.cs中
bool hasLaunched;
private void Application_Launching(object sender, LaunchingEventArgs e)
{
hasLaunched = true;
}
private void Application_Activated(object sender, ActivatedEventArgs e)
{
if (!hasLaunched) // recovering from a tombstone
GlobalNavigationService.ToMainPage();
hasLaunched = true;
}
在GlobalNavigationService类中:
public static async void ToMainPage()
{
//CurrentFrame.StopLoading();
await Observable.FromEventPattern<NavigationEventArgs>(CurrentFrame, "Navigated").Take(1).ToTask();
SafelyNavigateTo("/ZuneSlotMachine;component/Views/Main/MainPage.xaml");
await Observable.FromEventPattern<NavigationEventArgs>(CurrentFrame, "Navigated").Take(1).ToTask();
while (CurrentFrame.BackStack.Count() > 0)
CurrentFrame.RemoveBackEntry();
}
public静态异步void to输入页()
{
//CurrentFrame.StopLoading();
wait Observable.FromEventPattern(CurrentFrame,“Navigated”).Take(1.ToTask();
SafelyNavigateTo(“/ZuneSlotMachine;component/Views/Main/MainPage.xaml”);
wait Observable.FromEventPattern(CurrentFrame,“Navigated”).Take(1.ToTask();
while(CurrentFrame.BackStack.Count()>0)
CurrentFrame.RemoveBackEntry();
}
基本上,它会等待第一次导航发生,即使调用CurrentFrame.StopLoading()也无法取消第一次导航。在第一次导航之后,它导航到了我的起始页面。导航完成后,它将从backback中删除所有条目
它可以工作,但从墓碑镇返回时有明显的延迟(1-2秒)。我想在主页上重新启动应用程序。不到3页深或任何被关闭的地方当你从墓碑回来时,你可以导航到你的主屏幕并从背面移除第一个屏幕。我认为这是可能的。