Xamarin.forms 选项卡式页面OnAppearing()

Xamarin.forms 选项卡式页面OnAppearing(),xamarin.forms,tabbedpage,Xamarin.forms,Tabbedpage,我有一个标签页的Xamarin表单应用程序,我正在尝试自定义它。我正在从仅限IOs的应用程序迁移到所有平台。在iOS中有一对函数,我使用了ViewDidEnglishe()、ViewDidAppease()和ViewDidLoad() 应用程序现在加载选项卡式页面,如下所示: { Children.Add(new MyPage1()); Children.Add(new MyPage2()); Children.Add(new MyPage3()); Childr

我有一个标签页的Xamarin表单应用程序,我正在尝试自定义它。我正在从仅限IOs的应用程序迁移到所有平台。在iOS中有一对函数,我使用了ViewDidEnglishe()、ViewDidAppease()和ViewDidLoad()

应用程序现在加载选项卡式页面,如下所示:

{
    Children.Add(new MyPage1());
    Children.Add(new MyPage2());
    Children.Add(new MyPage3());
    Children.Add(new MyPage4());
}
每个子页面声明如下:所有继承自ContentPage

class MyPage1: ContentPage
{
        …
        protected override void OnAppearing()
        {
            base.OnAppearing();
            Content = SomeContentPage;
        }
}
我遇到的问题是,当当前仅显示MyPage1时,所有页面都会调用OnAppearing()。我需要知道每个子页面何时加载

我已经读过关于message center的文章,但我不确定在这种特殊情况下如何实现它。信息中心是解决这一问题的最佳方案吗


如何实现一个解决方案,使我能够知道四个页面中显示了哪一个?

在主选项卡页面上,添加子页面后,将CurrentPage属性设置为null应该可以解决问题。

可能的解决方法是在选项卡页面中覆盖OnCurrentPageChanged

protected override void OnCurrentPageChanged()
{
    base.OnCurrentPageChanged();

    if ( CurrentPage is YourContentPage page)
    {
        page.YourCustomCode();
    }
}

我遇到了同样的问题,你解决了吗?您好,这是一个已知的错误,在最新的预发行版中已修复,所以您的问题是出现了多次调用方法的问题,对吗?从XF 3.0.0.446417起未修复。。。伙计,这太糟糕了!未在XF 4.0最新版本中修复release@Shockwaver,实际上它确实解决了这个问题。不知道为什么在你的情况下不起作用。这解决了前一个错误,即第一页的
出现两次
触发。当应用程序启动时,不会修复所有页面出现的问题。