我默认将TabbedPage
的{{1}}从MasterDetailPage
推到ViewModel
,显示选择的第一个标签页。如何选择第二个标签?
这是我在ViewModel中的代码
TabbedPage
async Task MoviesTab()
{
await (App.Current.MainPage as MasterDetailPage).Detail.Navigation.PushAsync(new HomePage());
(App.Current.MainPage as MasterDetailPage).IsPresented = false;
//var pages=new HomePage().Children.GetEnumerator();
//pages.MoveNext();
//new HomePage().TabIndex = 1; //Not working
}
在xaml中定义了两个标签
HomePage
从侧面菜单调用public partial class HomePage : TabbedPage
方法时,始终会出现第一个选择的标签。
修改
第一种情况无效,第二次抛出MoviesTab()
异常
场景1
NullReferenceExeption
场景2
var tabbedPaged = new TabbedPage();
tabbedPaged.TabIndex = 1;
await (App.Current.MainPage as MasterDetailPage).Detail.Navigation.PushAsync(new HomePage());
(App.Current.MainPage as MasterDetailPage).IsPresented = false;
答案 0 :(得分:2)
将TabbedPage
保存到局部变量并在显示之前更改标签索引:
var tabbedPaged = new TabbedPage();
tabbedPaged.TabIndex = 1;
await (App.Current.MainPage as MasterDetailPage).Detail.Navigation.PushAsync(tabbedPaged);
或者在将其推为当前详细信息后获得当前的“详细信息”页面,将其转换为TabbedPage,然后设置索引:
((App.Current.MainPage as MasterDetailPage).Detail as TabbedPage).TabIndex = 1;
答案 1 :(得分:0)
设置TabIndex
不会执行任何操作。
这是我的导航方式:
tabbedPage.CurrentPage = tabbedPage.Children.FirstOrDefault(c => c.Title == "Page Title");
可选说明:
如果您的选项卡式页面位于NavigationPage内并且是第一页,则可以按以下方式访问TabbedPage:
var tabbedPage = (App.Current.MainPage as NavigationPage).RootPage as TabbedPage;
要在其上导航的ContentPage中设置页面标题。