繁体   English   中英

如何从ContentPage导航到ContentPage?

[英]How to navigate from ContentPage to ContentPage?

我正在尝试从一个ContentPage导航到另一个。 在我的WelcomePage ,我有一个按钮,该按钮应将我定向到具有以下内容的另一页

        _loginButton.Clicked += (s, e) =>
            {
                if (OnLoginEnter != null) OnLoginEnter();
            };

现在,在我尝试管理所有页面的PageManager类中,我有类似的内容

public class PageManager : Page
{
    #region Fields
    public static WelcomePage WelcomePage = new WelcomePage();
    public static LoginPage LoginPage = new LoginPage();
    #endregion

    public Page GetStarted()
    {
        return WelcomePage.Generate();
    }
}

最后,在MainActivity.cs (Android项目)中,我尝试使用以下方法来管理所有这些:

//I have to use a method for that for some reason. Can't call .Generate() directly.
SetPage(PageManager.GetStarted());
PageManager.WelcomePage.OnLoginEnter += () =>
    {
        SetPage(PageManager.LoginPage.Generate());
    };

我发现这非常令人困惑且无济于事。 我想要的是一种从一个ContentPage导航到另一个ContentPage的方法。

我也很沮丧-但是,我了解Xamarin正在努力改善页面导航。

目前,您有几种选择。

如果您很高兴有流程,那么无需替换整个页面但可以返回,请使用提到的NavigationPage或PageManager echyzero。

如果要有一个选项页,请使用MasterDetailPage并替换详细信息。

或者,创建一个接口,该接口具有一个名为SetRootPage的方法,并为Android和iOS实施该接口。 在启动时将接口的实例传递到App.Run(IPageLoader)中,然后可以从App类中调用SetRootPage来替换Root。 我前一段时间确实报告了一个错误,现在可能已经修复了。 同时,我的解决方法是使用CarouselPage,在Carousel上只有一个页面,需要时可以替换该页面-实际上,如果有点黑,它的效果很好。

答案来自Xamarin。 在此处形成文档

listView.ItemSelected += async (sender, e) => {
    var todoItem = (TodoItem)e.SelectedItem;
    var todoPage = new TodoItemPage(todoItem); // so the new page shows correct data
    await Navigation.PushAsync(todoPage);
};

因此,对于您来说,它可能看起来像这样:

PageManager.WelcomePage.OnLoginEnter += () =>
    {
        await Navigation.PushAsync(PageManager.LoginPage.Generate());
    };

对于iOS,您需要通过如下所示的NavigationPage进行此操作(示例位于AppDelegate.cs文件中)

window.RootViewController = new NavigationPage (new MyLoginForm ()).CreateViewController ();

之后,您可以在应用程序的任何ContentPage中调用await Navigation.PushAsync('所需的任何页面')。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM