0

在 Xamarin Forms 项目中,我创建了一个 TabbedPage,在其中添加了 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 方法永远不会被调用。这发生在 UWP 上。

4

1 回答 1

1

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

创建一个名为 IAppearable 的接口:

internal interface IAppearable
{
    void HandleAppearing();
}

让您的内容页面实现此接口:

public partial class MyContentPage : ContentPage, IAppearable

在 HandleAppearing 中执行您在 OnAppearing 中会执行的操作:

public void HandleAppearing()
    {
        // do appearing stuff here
    }

以编程方式设置标签页后,使用以下代码:

CurrentPage = Children[pageIndex];

if (Device.RuntimePlatform == Device.UWP)
{
    if (CurrentPage is IAppearable appearablePage)
    {
        appearablePage.HandleAppearing();
    }
}
于 2019-03-04T22:00:51.943 回答