В Prism 7 для форм Xamarin, есть ли способ получить предыдущую страницу в обработчике OnNavigatedTo - PullRequest
0 голосов
/ 30 сентября 2018

Новое в использовании Prism в формах Xamarin: INavigationAware предоставляет мне обработчик OnNavigatedTo.Я хочу различного поведения в этой форме в зависимости от того, откуда мы идем.Есть ли способ получить предыдущую страницу?

В частности, у меня есть страница A, которая открывает страницу B (модальную), если определенное условие выполняется.Однако, если нажать кнопку «Назад» со страницы B, возвращая меня на страницу A, я не хочу снова открывать страницу B.Скорее, я хочу вернуться на предыдущую страницу под страницей A в стеке навигации.

1 Ответ

0 голосов
/ 30 сентября 2018

Передача страницы была бы прямым нарушением дизайна MVVM, так как ваша ViewModel не должна иметь прямой подсказки о связанном представлении.Тем не менее, все методы INavigationAware используют NavigationParameters, что означает, что вы можете передать какое-то значение, которое вы можете проверить, для следующего:

NavigationService.NavigateAsync("ModalA", new NavigationParameters {{"reason", "foo"}});

public void OnNavigatedTo(INavigationParameters navigationParameters)
{
    switch(navigationParameters.GetValue<string>("reason"))
    {
        case "foo":
            // Do Foo
            break;
        case "bar":
            // Do Bar
            break;
    }
}
...