如何从ContentPage打开新的TabbedPage?

时间:2015-03-30 14:14:40

标签: c# xaml xamarin.ios xamarin xamarin.forms

我正在尝试从ContentPage打开(使用任何方法)TabbedPage。

我的主要应用代码:

public class App : Application
{
    public App ()
    {
        MainPage = new ConnectPage ();
    }
}

我的ConnectPage使用XAML,代码:

.cs文件:

public partial class ConnectPage : ContentPage
    {
        public ConnectPage ()
        {
            InitializeComponent ();
        }

        void connectDevice(object sender, EventArgs args){
            connect_btn.Text = "Connecting...";
            connect_btn.IsEnabled = false;
            var mainapp_page = new MainApp ();
            Navigation.PushAsync (mainapp_page);
        }
    }

XAML文件:

<Button x:Name="connect_btn" Text="Connect Now" Clicked="connectDevice"></Button>

上面的方法抛出错误:

  

iOS上不支持全局支持PushAsync,请使用a   NavigationPage

我的MainApp.cs(包含标签):

public class MainApp : ContentPage
{
    public MainApp ()
    {
        var tabs = new TabbedPage ();
        tabs.Children.Add (new Tab1Page{Title="Tab1" });
        tabs.Children.Add (new Tab2Page{Title="Tab2" });
        tabs.Children.Add (new Tab3Page{Title="Tab3" });
    }
}

1 个答案:

答案 0 :(得分:1)

您可以更新您应用的MainPage媒体资源,并将其设置为您要显示的页面,使用堆栈导航或以模态方式显示页面。

设置新的主页面将无法让用户返回:

App.Current.MainPage = new SomeOtherPage ();

如果您想使用堆栈导航,则必须将初始页面包装成NavigationPage

public partial class App : Application
{
    public App ()
    {
        InitializeComponent ();
        this.MainPage = new NavigationPage (new FirstPage ());
    }
}

您可以使用Navigation.PushAsync()

如果您想以模态方式呈现页面,因此它会显示在当前页面的顶部并且可以被解除,请使用:

Navgiation.PushModalAsync(new Page());

但是,这仍然需要将当前页面包装成NavigationPage

还有其他方法,例如CarouselPageMasterDetailPage。我建议您查看所有选项的documentation