我正在尝试在Xamarin Forms应用程序中创建Prism模块。我的模块包含特定于平台的代码和用于该接口的视图模型。例如:
ThingModule (PCL)
ThingModule
+ Initialize()
IThing
ThingView
ThingViewModel(IThing thing)
ThingModule.Droid (Android)
AndroidThingImplementation : IThing
ThingModule.iOS (iOS)
iOSThingImplementation : IThing
我可以在模块的Initialize方法中轻松注册视图以便导航,但是如何在模块(而不是应用程序)中注册特定于平台的实现?
您无需在该模块中注册平台详细信息。您可以在特定于平台的实际项目中注册特定于平台的内容。您的模块只需要引用该接口即可,仅此而已。您可以使用IPlatformInitializer来执行此操作。在此处查看示例:
Android:https://github.com/PrismLibrary/Prism/blob/master/Sandbox/Xamarin/HelloWorld/HelloWorld/HelloWorld.Droid/MainActivity.cs#L28
[Activity(Label = "HelloWorld", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.tabs;
ToolbarResource = Resource.Layout.toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App(new AndroidInitializer()));
}
}
public class AndroidInitializer : IPlatformInitializer
{
public void RegisterTypes(IUnityContainer container)
{
}
}
XF项目:https : //github.com/PrismLibrary/Prism/blob/master/Sandbox/Xamarin/HelloWorld/HelloWorld/HelloWorld/App.cs#L15
public class App : PrismApplication
{
public App(IPlatformInitializer initializer = null) : base(initializer) { }
...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句