Tabs UWP:Xamarin表单选项卡式页面更改页面不';不要一出现就打电话

Tabs UWP:Xamarin表单选项卡式页面更改页面不';不要一出现就打电话,tabs,uwp,xamarin.forms,tabbedpage,Tabs,Uwp,Xamarin.forms,Tabbedpage,在Xamarin表单项目中,我创建了一个选项卡页面,在其中添加了5个子导航页面 { Children.Add(new NavigationPage(new A())); Children.Add(new NavigationPage(new B())); Children.Add(new NavigationPage(new C())); Children.Add(new NavigationPage(new D())); Children.Add(new

在Xamarin表单项目中,我创建了一个选项卡页面,在其中添加了5个子导航页面

{
    Children.Add(new NavigationPage(new A()));
    Children.Add(new NavigationPage(new B()));
    Children.Add(new NavigationPage(new C()));
    Children.Add(new NavigationPage(new D()));
    Children.Add(new NavigationPage(new E()));
}
当我从选项卡a手动单击选项卡B时;B的OnAppearing方法按预期调用。但是,当我使用

tabbedPage.CurrentPage = tabbedPage.Children[index]

然后B的OnAppearing方法被称为never。这在UWP上发生。

从Xamarin Forms 3.4.0.1008975和UWP 6.1.5开始,这似乎仍然是一个问题。我是这样解决的:

创建一个名为iapperable的接口:

internal interface IAppearable
{
    void HandleAppearing();
}
让您的内容页实现此界面:

public partial class MyContentPage : ContentPage, IAppearable
在手舞足蹈中,做你在舞台上会做的事:

public void HandleAppearing()
    {
        // do appearing stuff here
    }
以编程方式设置选项卡页面后,请使用以下代码:

CurrentPage = Children[pageIndex];

if (Device.RuntimePlatform == Device.UWP)
{
    if (CurrentPage is IAppearable appearablePage)
    {
        appearablePage.HandleAppearing();
    }
}

似乎我也有类似的问题,您的视图模型在每个页面上都执行非本地数据吗?为此,我们没有使用MVVM,我们只是简单地使用MVC。当我们手动更改选项卡时,将调用所选选项卡的onappearing方法,但是当我们以编程方式更改选项卡时,则不会为所选选项卡调用onappearing方法。我已将此行代码(
this.CurrentPage=this.Children[2];
)放置在
TabbedPage
构造函数方法中。但我无法在我身边重现你的问题。这是我的。请检查。@NicoZhu MSFT谢谢,您的代码正在该场景中工作。在应用程序启动时,它选择第三个页面并调用其OnAppearing。但是,我修改了您的代码以复制我的场景。在第一页有一个按钮“点击我”我把代码显示在这个按钮点击第三页。单击按钮后,用户将从第一个页面重定向到第三个页面,但根本不会调用第三个页面的OnAppearing()方法。请查收。(让我知道我是否可以提交对回购协议的更改供您测试)@NicoZhu MSFT您有机会查找问题吗?XF v4.0存在此问题。你有报道的bug的链接吗?2019年7月这里也是。有报告的bug吗?这在2021年仍然是个问题。在Xamarin方面,这个问题似乎很难解决。然而,@kip-morgan方法似乎是这里最好的方法。唯一的问题是,谁应该负责触发
handlappearing()
。在我的例子中,我是在当前页面更改后的
中完成的。