Xamarin.Forms:使用 GetMainPage()

Xamarin.Forms: Use of GetMainPage()

我目前正在阅读 An Introduction to Xamarin.Forms导航 部分。应该使用 GetMainPage() 方法。但是应该如何使用呢?

应用委托的默认实现如下所示:

应用委托:

public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        global::Xamarin.Forms.Forms.Init ();

        LoadApplication (new App ());

        return base.FinishedLaunching (app, options);
    }
}

应用程序:

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

    public static Page GetMainPage()
    {
        var mainNav = new NavigationPage(new ListExample());
        return mainNav;
    }
}

我设法使用 GetMainPage() 方法而不是

Application windows are expected to have a root view controller at the end of application launch

如果我查看(旧的?)示例 (example1, example2),应用委托是不同的,并且有一个 CreateViewController() 方法可用。就我而言不是!

将根页面加载到堆栈的正确方法是什么?

您不必使用 GetMainPage();这只是 创建的一种方法。 X.Forms 这些天的工作方式是:它在 Xamarin.Forms Application class 中公开一个 MainPage 属性。您将其设置为 Page 的一个实例。如何创建该页面取决于您。您可以使用

this.MainPage = new ContentPage { Content = ... }

或者您每页创建一个文件(恕我直言,这对于可维护性来说是最好的):

this.MainPage = new MyLoginPage();

或者您使用创建页面的辅助方法:

this.MainPage = this.GetMainPage();

主页是表单应用程序的第一页。您可以将 MainPage 属性 设置为不同的值以显示另一个页面。

早期版本的表单使用了不同的方法,尚未更新所有示例。现在所有平台只需要调用 Forms Init() 方法和调用 LoadApplication() 而不是创建视图控制器、activity 或页面 (WP8)。