Tabs UWP:Xamarin表单选项卡式页面更改页面不';不要一出现就打电话
在Xamarin表单项目中,我创建了一个选项卡页面,在其中添加了5个子导航页面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
{
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()
。在我的例子中,我是在当前页面更改后的中完成的。