В Prism 7 для форм Xamarin, есть ли способ получить предыдущую страницу в обработчике OnNavigatedTo
Новое в использовании Prism в формах Xamarin: INavigationAware предоставляет мне обработчик OnNavigatedTo. Я хочу различного поведения в этой форме в зависимости от того, откуда мы идем. Есть ли способ получить предыдущую страницу?
В частности, у меня есть страница A, которая открывает страницу B (модальную), если определенное условие выполняется. Однако, если нажать кнопку "Назад" со страницы B, возвращая меня на страницу A, я не хочу снова открывать страницу B. Скорее, я хочу вернуться на предыдущую страницу под страницей A в стеке навигации.
1 ответ
Хорошая передача страницы будет прямым нарушением дизайна 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;
}
}