我正在使用TabbedPage
在我的应用中实施标签页。我有4个标签,并且始终总是首先打开第二个标签,因为第一个标签是主页标签。选择第二个标签时,第三个标签也会在后台加载;选择第三个标签时,第四个标签也会在后台加载。
标签页代码:
var homePage = new Pages.HomePage()
{
Title = "Home"
};
var secondPage= new SecondPage()
{
Title = "SecondPage"
};
var thirdPage = new ThirdPage()
{
Title = "ThirdPage"
};
var fourthPage = new FourthPage()
{
Title = "FourthPage"
};
Children.Add(homePage);
Children.Add(secondPage);
Children.Add(thirdPage);
Children.Add(fourthPage);
CurrentPage = Children[1];
this.CurrentPageChanged += (object sender, EventArgs e) =>
{
var i = this.Children.IndexOf(this.CurrentPage);
if (i == 0)
{
CallHomePage();
}
else if (i == 1)
{
//SecondPage icon settings
}
else if (i == 2)
{
//ThirdPage icon settings
}
else if (i == 3)
{
//FourthPage icon settings
}
};
选择标签时如何停止加载相邻标签?
答案 0 :(得分:1)
解决方案:您可以在OnCurrentPageChanged方法中获取currentPage的索引,如果索引等于1(第二页),请使用消息中心将消息发送到该页面。请参考以下代码。 >
在标签页中
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");
}
else if (index == 3)
{
//...
}
}
在第二页中。将将数据从onAppearing加载到构造函数中的代码
public SecondPage()
{
//...
MessagingCenter.Subscribe<Object>(this, "click_second_tab", (obj) =>
{
//load your data here
});
}
答案 1 :(得分:0)
与C#中的所有数组/列表一样,Children
列表的索引为零索引,这意味着第一个元素位于Children[0]
。