从ViewModel推送时如何更改TabbedPage的TabIndex

时间:2018-11-14 06:55:37

标签: c# xamarin mvvm xamarin.forms

我默认将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;

enter image description here

2 个答案:

答案 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中设置页面标题。