我知道在WP7中无法以编程方式退出应用程序.那么我可以处理以下需求吗?
我的MainPage是空的,并且唯一的目的是进行测试:
如果用户从未填写首选项页面,则重定向到Page_B.xaml(收集其偏好的页面,例如语言以及运行应用程序所需的其他信息).否则重定向到Page_A.xaml.
因此,显示用户的第一页是Page_A或Page_B(取决于这是否是他/她第一次运行应用程序).
我的MainPage是空的,并且唯一的目的是进行测试:
如果用户从未填写首选项页面,则重定向到Page_B.xaml(收集其偏好的页面,例如语言以及运行应用程序所需的其他信息).否则重定向到Page_A.xaml.
因此,显示用户的第一页是Page_A或Page_B(取决于这是否是他/她第一次运行应用程序).
这是问题:
当用户在Page_A或Page_B中选择硬件“后退”按钮时,我想退出应用程序.相反,他被重定向到主页,它没有显示任何内容.
因此,当用户在Page_A或Page_B(OnBackKeyPress())中选择“返回”时,或者更常见的是当用户使用“返回”按钮进入MainPage.xaml时,我需要退出应用程序.
有没有办法退出应用程序而不显示空的MainPage.xaml?
谢谢你的建议.
埃米利奥
这是MainPage.xaml中的简化代码:
public MainPage(){ InitializeComponent(); if (phoneAppService.State.TryGetValue("currentLanguage",out someObject)) { // Yes: go on var uri = "/Pages/Page_A.xaml"; this.Dispatcher.BeginInvoke(() => this.NavigationService.Navigate(new Uri(uri,UriKind.Relative))); } else { // No: select language before proceeding var uri = "/Pages/Page_B.xaml"; this.Dispatcher.BeginInvoke( () => this.NavigationService.Navigate(new Uri(uri,UriKind.Relative))); } } **// if prevIoUs page was Page_A or Page_B then exit application** protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { string sourcePage = ""; if (NavigationContext.QueryString.TryGetValue("from",out sourcePage)) { if ((string.Compare(sourcePage.ToString(),"Page_A")) == 0 ? true : false) { **// EXIT APPLICATION** } if ((string.Compare(sourcePage.ToString(),"Page_B")) == 0 ? true : false) { **// EXIT APPLICATION** } } base.OnNavigatedTo(e); }
Page_A.xaml具有以下代码以将信息发送到MainPage.
// Back Button pressed: notify MainPage so it can exit application protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) { NavigationService.Navigate(new Uri(uri,UriKind.Relative)); base.OnBackKeyPress(e); }
Page_B.xaml具有以下代码以将信息发送到MainPage.
// Back Button pressed: notify MainPage so it can exit application protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) { var uri = "/MainPage.xaml?from=Page_B"; NavigationService.Navigate(new Uri(uri,UriKind.Relative)); base.OnBackKeyPress(e); }