如何使用依赖注入在Xamarin.Forms中实现Flyoutnavigation

时间:2018-01-24 22:34:07

标签: c# android ios xamarin xamarin.forms

如何使用依赖注入将Flyoutnavigation用于我的iOS项目。

我决定坚持使用Android的默认MasterDetailPage,因为它看起来不像iOS。

这是我到目前为止所做的:

在PCL中

IMainPage.cs:

public interface IMainPage
{
    Page GetMainPage();
}

App.cs:

public partial class App : Application
{
    public App()
    {
        MainPage = DependencyService.Get<IMainPage>().GetMainPage();
    }

    protected override void OnStart()
    {
        // Handle when your app starts
    }

    protected override void OnSleep()
    {
        // Handle when your app sleeps
    }

    protected override void OnResume()
    {
        // Handle when your app resumes
    }
}

在Android中

MainPage_Android.cs:

[assembly: Xamarin.Forms.Dependency(typeof(MainPage_Android))]
namespace ProjectName.Droid
{
    public class MainPage_Android : MasterDetailPage, IMainPage
    {
        private NavigationPage detail;
        private MasterPage master;

        public Page GetMainPage()
        {
            MasterDetailPage mdp = new MasterDetailPage();

            //Master
            master = new MasterPage();
            MasterBehavior = MasterBehavior.Popover;
            mdp.Master = master;

            //Detail
            detail = new NavigationPage(new Home())
            {
                BarBackgroundColor = Color.FromHex("#01A0E1"),
                BarTextColor = Color.White
            };
            mdp.Detail = detail;

            return mdp;
        }
    }
}

在iOS

  • 我被困在这里..如何使用Flyoutnavigation返回页面?

1 个答案:

答案 0 :(得分:1)

如果您想在Android上使用默认样式并在iOS上使用自定义样式,您可以尝试在iOS上为MasterDetailPage制作自定义渲染器。然后嵌入你的Flyoutnavigation

这是我的iPad渲染器:

[assembly: ExportRenderer(typeof(MainPage), typeof(MainPageRenderer))]
namespace FlyoutNavigationDemo.iOS
{
    public class MainPageRenderer : TabletMasterDetailRenderer
    { 
         //put your Flyoutnavigation's code here
    }
}

由于Flyoutnavigation代码太多。我为您制作了一个小样本,您可以参考here了解更多详情。