C# 如何从ContentPage导航到ContentPage?
我正在尝试从一个C# 如何从ContentPage导航到ContentPage?,c#,xamarin,C#,Xamarin,我正在尝试从一个ContentPage导航到另一个。 在我的WelcomePage中,我有一个按钮,可以将我引导到另一个包含以下内容的页面 _loginButton.Clicked += (s, e) => { if (OnLoginEnter != null) OnLoginEnter(); }; 现在,在我的PageManager类中,我尝试管理所有页面,我有这样的东西 public cl
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());
};
我觉得这是非常混乱和低效的。
我想要的只是一种从一个内容页面导航到另一个内容页面的方式。答案摘自Xamarin.Forms documation 所以对你来说,它可能看起来像这样:
PageManager.WelcomePage.OnLoginEnter += () =>
{
await Navigation.PushAsync(PageManager.LoginPage.Generate());
};
对于iOS,您需要通过如下所示的NavigationPage执行此操作(示例位于AppDelegate.cs文件中)
在此之后,您可以在应用程序的任何ContentPage中调用Wait Navigation.PushAsync(“您想要的任何页面”)。我也有同感,但我知道Xamarin正在努力改进页面导航 现在,你有几个选择 如果您很高兴拥有一个流,那么不需要替换整个页面,但可以返回,请使用NavigationPage或前面提到的PageManager echyzero 如果要创建选项页,请使用MasterDetailPage并替换该详细信息
或者,创建一个接口,该接口有一个名为SetRootPage的方法,并在Android和iOS上实现它。在启动时将接口实例传递到App.Run(IPageLoader),然后可以从App类调用SetRootPage来替换根。不久前我报告了一个bug,现在可能已经修复了。与此同时,我的解决办法是使用旋转木马页面,旋转木马上只有一个页面,我会在需要时替换它-它实际上工作得很好,如果有点粗糙的话。他们真的需要简化它。我将尝试一下旋转木马的想法。
Navigation
不可用,除非我使用NavigationPage
。因此,请使用NavigationPage。有关如何设置,请参见上面的编辑。
PageManager.WelcomePage.OnLoginEnter += () =>
{
await Navigation.PushAsync(PageManager.LoginPage.Generate());
};
window.RootViewController = new NavigationPage (new MyLoginForm ()).CreateViewController ();