我的应用程序中的主页是 TabbedPage
我有三个标签:
支付、配置、维护
其中一个选项卡由设置控制以显示或不显示。当它更改为 false 时,我通过执行以下操作删除选项卡:
tabPage.Children.Remove(ConfigTab);
此删除工作正常。如果我重新打开选项卡,我可以使用以下代码添加选项卡:
tabPage.Children.Add(ConfigTab);
但是它添加在列表的末尾并且缺少导航标题:
我查看了使用 Insert 方法,我可以在其中分离索引
tabPage.Children.Insert(1,ConfigTab);
但这使应用程序崩溃并显示以下消息:
未处理的异常:Java.Lang.IndexOutOfBoundsException:无效的索引 2,大小为 2
如果我在那时检查孩子,它会在正确的索引处添加页面
关于如何将新页面动态插入到 TabbedPage 的任何建议?并保留导航?
更新:
我现在已经通过执行以下操作使其正常工作:
var paymentPage = tabPage.Children.FirstOrDefault(p=> p.ClassId == "PaymentNavPage");
var configPage = GetConfigPage();
var maintenancePage = tabPage.Children.FirstOrDefault(p => p.ClassId == "MaintaintNavPage");
// Clear old Tabgs
tabPage.Children.Clear();
// Put pages back
tabPage.Children.Add(paymentPage);
tabPage.Children.Add(configPage);
tabPage.Children.Add(maintenancePage);
如果有更好的方法来使用 Insert 方法然后重置导航堆栈,我仍然很感兴趣。
我在 Insert to the Children 中遇到了同样的事情。您的解决方案似乎是隐藏和显示页面的唯一选项。我建议将页面分配给变量,这样您就不必在每次隐藏/显示 ConfigPage 时都遍历 Children。根据名称,我假设这些页面彼此不同。
在类似页面的情况下,ItemsSource 可以在 DataTemplate 的帮助下使用。将 ItemsSource 绑定到 ObservableCollection 时,隐藏和显示页面只需要修改该集合。可以在此处找到有关此的更多信息:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句