Выход из приложения с помощью кнопки «Назад» на WP7

Я знаю, что в WP7 невозможно выйти из приложения программно. Так как я могу справиться со следующей потребностью? Моя страница 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);
        }
6
задан Emilio 29 July 2011 в 16:02
поделиться