2016-02-17 3 views
0

Предположим, я хочу передать один объект (ссылку) через несколько страниц. Я могу перемещаться и передавать параметры через Frame.Navigate(typeof(FirstPage), object). Но как правильно передать ссылку назад на спину?UWP - Правильный способ передачи параметров между страницами

protected override void OnNavigatedTo(NavigationEventArgs e) { 
    if (e.Parameter is SomeClass) { 
     this.someObject = (SomeClass)e.Parameter; 
    } 
    else { 
     this.someObject = new SomeClass(); 
    } 

    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; 
    SystemNavigationManager.GetForCurrentView().BackRequested += OnHardwareButtonsBackPressed; 

    base.OnNavigatedTo(e); 
} 


private void OnHardwareButtonsBackPressed(object sender, BackRequestedEventArgs e) { 
    // This is the missing line! 
    Frame.Navigate(typeof(FirstPage), this.someObject); 
} 

Но когда я нажимаю кнопку назад он возвращается к FirstPageOnNavigatedTo без параметров, а затем обратно в SecondPageOnHardwareButtonsBackPressed, а затем обратно в FirstPageOnNavigatedTo с заполненным параметром.

Не могли бы вы посоветовать мне лучше подойти?

ответ

3

В вашем заднем обработчике не переходите вперед, просто звоните GoBack - и это обычно проще, если вы справляетесь с этим на глобальном уровне, а не на уровне страницы.

Вы можете сохранить состояние приложения (то, что вы хотите сохранить в навигации по страницам) в глобальных/статических объектах, или вы можете напрямую изменить объект, который был передан из начальной навигации (если на вызывающей странице все еще имеется ссылка , он сможет увидеть изменения).

Я бы предпочел выполнить поиск «MVVM Windows Apps» и посмотреть некоторые результаты, чтобы узнать о распространенном способе создания приложений XAML.

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