Почему Navigation.PopAsync () не вызывает метод OnAppearing базовой страницы? - PullRequest
0 голосов
/ 02 октября 2018

Мои формы Xamarin Application имеют MainPage, установленное на

new NavigationPage(new CarsMasterDetailPage())

, где CarsMasterDetailPage : MasterDetailPage.

В конструкторе CarsMasterDetailPage я установил для свойства Master значениеnew CarsMasterPage() и свойство Detail до new CarsDetailPage()CarsMasterPage, и CarsDetailPage расширяют ContentPage.

Главная страница содержит список автомобилей и кнопку с обработчиком событий, который выполняет следующие действия:

await Navigation.PushAsync(new AddCar());

* * 1022На странице * есть кнопка с обработчиком событий, который выполняет следующие действия:

await Navigation.PopAsync();

При первом запуске приложения вызывается метод OnAppearing главной страницы.При первом возврате навигации на главную страницу снова вызывается OnAppearing.Последующие навигационные толчки и всплывающие окна не делают, однако.

Я могу обойти это, добавив делегата на главную страницу, который вызывается страницей добавления машины, когда это сделано, но это кажется хаком, так как есть события страницы, чтобысправиться с этим.Кто-нибудь знает, почему не работает?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Подписаться на событие NavigationPage.Popped:

navigationPage.Popped += OnPopped;

...

void OnPopped(object sender, NavigationEventArgs e)
{
    var currentPage = (sender as NavigationPage).CurrentPage;
    var removedPage = e.Page;
    ...
}
0 голосов
/ 02 октября 2018

В моем случае я сделал это следующим образом, и все отлично работает: Моя главная страница:

MainPage = new MasterDetailPage {
                Master = new MasterDetailPage1Master(),
                Detail = new MyNavigationPage(new MainPageLinearList(appType))
            };

Поэтому ключевым моментом было использование NavigationPage в DetailPage.После этого все работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...