xamarin - 为什么 Navigation.PopAsync() 不触发底层页面的 OnAppearing 方法?
问题描述
我的 Xamarin FormsApplication
有一MainPage
组
new NavigationPage(new CarsMasterDetailPage())
哪里CarsMasterDetailPage : MasterDetailPage
。
在CarsMasterDetailPage
构造函数中,我将Master
属性设置为new CarsMasterPage()
并将Detail
属性设置为new CarsDetailPage()
. 两者CarsMasterPage
和CarsDetailPage
扩展ContentPage
。
母版页包含一个汽车列表和一个按钮,该按钮具有一个事件处理程序,它执行以下操作:
await Navigation.PushAsync(new AddCar());
该AddCar
页面有一个带有事件处理程序的按钮,它执行以下操作:
await Navigation.PopAsync();
当我第一次运行应用程序时,OnAppearing
会调用母版页的方法。导航第一次弹回母版页时,OnAppearing
会再次调用。但是,随后的导航推送和弹出不会。
我可以通过在添加汽车页面完成时调用的母版页上添加一个委托来解决它,但这感觉很糟糕,因为有页面事件来处理这个问题。有谁知道为什么它不工作?
解决方案
就我而言,我是这样做的,一切正常:我的主页:
MainPage = new MasterDetailPage {
Master = new MasterDetailPage1Master(),
Detail = new MyNavigationPage(new MainPageLinearList(appType))
};
所以关键是在DetailPage中使用NavigationPage。之后一切正常。
推荐阅读
- javascript - 有没有办法在Javascript中做动态CSG?
- javascript - 检测用户是否在 JS 中使用 Brave
- excel - 财政年度从 4 月开始,但我想使用 ISO 2018 日历年的第 14 周到 2019 日历年的第 13 周
- javascript - AJAX:禁用提交按钮,直到用户名字段充满电子邮件
- html - 图片未显示在 Jekyll 帖子中,但显示在本地
- c# - REST API 调用显示 404 错误
- c# - 数据库进入只读状态,没有数据写入 MS Access C#
- c# - 使用 IClassFixture 时输出测试结果 XUnit .net core
- javascript - 使用时无法在 JavaScript 中使用 HTML 变量会在浏览器中打印整个 JavaScript 代码
- android - 长时间设置定时器