如何使用依赖注入在 Xamarin.Forms 中实现 Flyoutnavigation
Posted
技术标签:
【中文标题】如何使用依赖注入在 Xamarin.Forms 中实现 Flyoutnavigation【英文标题】:How to use Dependency Injection to implement Flyoutnavigation in Xamarin.Forms 【发布时间】: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 返回页面?【问题讨论】:
【参考方案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。以上是关于如何使用依赖注入在 Xamarin.Forms 中实现 Flyoutnavigation的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms Shell 如何在路由导航中向字符串注入多个不同的值
如何使用 Xamarin.Forms.DependencyService 注入具有构造函数注入的 ViewModel
如何使用 Xamarin 在 Android 中同步获取 GPS 位置更新?
使用依赖服务从 Xamarin.Forms 应用发送电子邮件