2014-02-03 3 views
1

В моем приложении у меня есть эти две функции. С тех пор, как я добавил функцию OnBackKeyPress, утверждение if внутри OnNavigatedFrom верно, даже если я нажму кнопку «Назад» (может быть, потому, что e.cancel= true; внутри OnBackKeyPress).OnBackKeyPress не работает должным образом

protected override void OnNavigatedFrom(NavigationEventArgs e) 
{ 
    // On back navigation there is no need to save state. 
    if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back) 
    { 
     StoreState(); //this should not run when i press back button 
    } 

    FilterPreviewPivot.SelectionChanged -= FilterPreviewPivot_SelectionChanged; 
    base.OnNavigatedFrom(e); 
} 

protected override void OnBackKeyPress(CancelEventArgs e) 
{ 
    while (NavigationService.CanGoBack) NavigationService.RemoveBackEntry(); 
    NavigationService.Navigate(new Uri("/Chooser.xaml", UriKind.Relative)); 

    // cancel the navigation 
    e.Cancel = true; 
} 
+0

@ lhan16 Я попытался установить точку останова внутри оператора if и нажал клавишу возврата. Заявление было выполнено. Я считаю, что причина этого - скорее всего. И не удалять это вызовет проблему. так как он вернется к backstack, а также chooser.xaml в то же время – Rishabh876

+0

Я вижу, вам захочется сохранить «e.cancel». Итак, какова ценность 'e.NavigationMode' внутри' OnNavigatedFrom' тогда? – lhan

+0

@ lhan16 его «новый» – Rishabh876

ответ

0

Поскольку вы устанавливаете e.cancel = true в OnBackKeyPress, то NavigationMode не будет в OnNavigatedFromBack.

Попробуйте использовать глобальную переменную на вашей странице, которая равна false, и установите ее в true в OnBackKeyPress. Затем в OnNavigatedFrom проверьте эту переменную вместо NavigationMode.Back.

Смежные вопросы