我正在使用TabbedPage
标签进行导航。我所有的Page
类都只有一个空的默认构造函数,我在OnAppearing
方法中加载了我的数据。我有 5 个标签。当我点击第二个标签时,OnAppearing
第 3、4、5 页的方法也被调用。
如何确保仅在单击选项卡时才加载数据?
我正在使用TabbedPage
标签进行导航。我所有的Page
类都只有一个空的默认构造函数,我在OnAppearing
方法中加载了我的数据。我有 5 个标签。当我点击第二个标签时,OnAppearing
第 3、4、5 页的方法也被调用。
如何确保仅在单击选项卡时才加载数据?
解决方案:
您可以在方法中获取 currentPage 的索引,OnCurrentPageChanged
如果索引等于 1(第二页),则使用messagecenter
向页面发送消息。参考以下代码。
在标签页中
protected override void OnCurrentPageChanged()
{
base.OnCurrentPageChanged();
int index = Children.IndexOf(CurrentPage);
if (index == 1)
{
MessagingCenter.Send<Object>(this, "click_second_tab");
}
else if (index == 2)
{
MessagingCenter.Send<Object>(this, "click_third_tab");
}
}
在第二页中。将加载数据的代码从 onAppearing 移动到构造函数
public MyPage1()
{
//...
MessagingCenter.Subscribe<Object>(this, "click_second_tab", (obj) =>
{
//load your data here
Console.WriteLine("11111");
});
}