【问题标题】:How to use Dependency Injection to implement Flyoutnavigation in Xamarin.Forms如何使用依赖注入在 Xamarin.Forms 中实现 Flyoutnavigation
【发布时间】:2018-07-04 02:36:04
【问题描述】:

我将如何使用依赖注入来为我的 iOS 项目使用 Flyoutnavigation

我决定坚持使用 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 返回页面?

【问题讨论】:

    标签: c# android ios xamarin xamarin.forms


    【解决方案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了解更多详情。

    【讨论】:

    • 您好,感谢您的回复。但是,当我加载并编译您的项目时,出现以下错误: 1. 元数据文件 'D:\New folder (2)\FlyoutNavigationDemo-master\FlyoutNavigationDemo\FlyoutNavigationDemo\bin\Debug\netstandard2.0\FlyoutNavigationDemo.dll' 不能可以找到 FlyoutNavigationDemo.iOS 以及 2。“属性”类型是在未引用的程序集中定义的。您必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。 FlyoutNavigationDemo
    • @Bracefor 请尝试删除 bin 和 obj 文件夹,然后再次运行。
    • 好的,我应该从每个项目中删除所有 bin 和 obj 文件夹吗?
    • @Bracefor 是的,你可以试试。
    • 我修好了!我所要做的就是将目标框架改回 .NET Standard 1.6。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    相关资源
    最近更新 更多