WP8.1 Silverlight App
我已经设置了一个urimapper来根据不同的条件启动不同的页面。函数SetUriMapper在App构造函数
中调用的App.xaml
<UriMapper:UriMapper x:Name="mapper">
<UriMapper:UriMapping Uri="/RootPage.xaml" />
</UriMapper:UriMapper>
App.xaml.cs
public App()
{
// Global handler for uncaught exceptions.
UnhandledException += Application_UnhandledException;
// Standard Silverlight initialization
InitializeComponent();
// Phone-specific initialization
InitializePhoneApplication();
// Database functions
SetupUriMapper();
}
void SetupUriMapper()
{
// Get the UriMapper from the app.xaml resources, and assign it to the root frame
UriMapper mapper = Resources["mapper"] as UriMapper;
RootFrame.UriMapper = mapper;
if (condition)
{
mapper.UriMappings[0].MappedUri = new Uri("/Walkthrough.xaml", UriKind.Relative);
}
else if (condition2)
{
mapper.UriMappings[0].MappedUri = new Uri("/ResetPasswordPrompt.xaml", UriKind.Relative);
}
else
mapper.UriMappings[0].MappedUri = new Uri("/MainPage.xaml", UriKind.Relative);
}
private void Application_Activated(object sender, ActivatedEventArgs e)
{
// reading data from database
CycleManager cycMan = CycleManager.Instance;
using (DBManager dbMan = new DBManager())
{
dbMan.OpenConnection();
dbMan.ReadSettingsData(cycMan.ActiveAccount);
}
}
现在用户在页面B中。然后按主页按钮。然后转到应用列表并再次选择应用。调用Application_Activated
并导航到页面B.但是在一秒钟内它会导航回MainPage。
但是如果用户按下后退按钮继续,它会导航到Page B并停留在那里。
行为很奇怪,有什么线索吗?
答案 0 :(得分:0)
这种行为是因为WP8的快速应用恢复功能。
您需要设置ActivationPolicy
以及重置导航的事件。此链接为您提供有关如何将应用程序恢复到上次停止位置的详细信息。