首页 > 解决方案 > 为什么 Navigation.PopAsync() 不触发底层页面的 OnAppearing 方法?

问题描述

我的 Xamarin FormsApplication有一MainPage

new NavigationPage(new CarsMasterDetailPage())

哪里CarsMasterDetailPage : MasterDetailPage

CarsMasterDetailPage构造函数中,我将Master属性设置为new CarsMasterPage()并将Detail属性设置为new CarsDetailPage(). 两者CarsMasterPageCarsDetailPage扩展ContentPage

母版页包含一个汽车列表和一个按钮,该按钮具有一个事件处理程序,它执行以下操作:

await Navigation.PushAsync(new AddCar());

AddCar页面有一个带有事件处理程序的按钮,它执行以下操作:

await Navigation.PopAsync();

当我第一次运行应用程序时,OnAppearing会调用母版页的方法。导航第一次弹回母版页时,OnAppearing会再次调用。但是,随后的导航推送和弹出不会。

我可以通过在添加汽车页面完成时调用的母版页上添加一个委托来解决它,但这感觉很糟糕,因为有页面事件来处理这个问题。有谁知道为什么它不工作?

标签: xamarinxamarin.forms

解决方案


就我而言,我是这样做的,一切正常:我的主页:

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

所以关键是在DetailPage中使用NavigationPage。之后一切正常。


推荐阅读