Xamarin - 从按钮更改选项卡式页面
Posted
技术标签:
【中文标题】Xamarin - 从按钮更改选项卡式页面【英文标题】:Xamarin - Change tabbed page from button 【发布时间】:2015-12-01 08:01:01 【问题描述】:我目前正在使用标签页:
<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:me="clr-namespace:Let_s_go_out.Views.Pages;assembly=Let_s_go_out"
x:Class="Let_s_go_out.Views.MainPage"
>
<TabbedPage.Children >
<me:PlacesList />
<me:PlaceSearch />
</TabbedPage.Children>
</TabbedPage>
在 PlaceSearch 内容中我有一个按钮:
<StackLayout Grid.Row="9" Orientation="Horizontal" >
<Button Text="Rechercher" HorizontalOptions="Center" VerticalOptions="Center" Command="Binding Search"></Button>
</StackLayout>
所以我的问题是:单击按钮时如何进入“PlaceList”标签页?
谢谢:)
【问题讨论】:
【参考方案1】:根据需要更改索引
private void FAB_Clicked(object sender, EventArgs e)
var tab = this.Parent.Parent as TabbedPage;
tab.CurrentPage = tab.Children[2];
【讨论】:
【参考方案2】:您也可以为此使用 MVVM 和 MessagingCenter。
查看:
public partial class AwesomeView : TabbedPage
public AwesomeView()
InitializeComponent();
BindingContext = new AwesomeViewModel();
protected override void OnAppearing()
MessagingCenter.Subscribe<AwesomeViewModel, int>(this, "SetActiveTab", (sender, index) =>
CurrentPage = Children[index];
);
protected override void OnDisappearing()
MessagingCenter.Unsubscribe<AwesomeViewModel>(this, "SetActiveTab");
视图模型:
public class AwesomeViewModel
public ICommand GoToTabCommand get; set;
private AwesomeViewModel()
InitCommands();
private void InitCommands()
GoToTabCommand = new Command(GoToTab);
private void GoToTab()
MessagingCenter.Send<AwesomeViewModel, int>(this, "SetActiveTab", 1); //REPLACE 1 with the index of your tab
您只需要将 GoToTabCommand 命令绑定到按钮或您想要的任何控件。
我建议使用常量而不是“SetActiveTab”。
【讨论】:
【参考方案3】:我不知道它是否会帮助其他人,但关于第一个答案,它在定义 var 选项卡时删除一个“父级”后对我有用,见下文。
private void FAB_Clicked(object sender, EventArgs e)
var tab = this.Parent as TabbedPage;
tab.CurrentPage = tab.Children[2];
【讨论】:
以上是关于Xamarin - 从按钮更改选项卡式页面的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xamarin Forms 中更改选项卡式页面指示器的颜色