MVVMCROSS是一个跨平台框架,可利用模型视图 - 视图模型(MVVM)模式来开发应用程序。它允许开发人员通过将应用程序逻辑分为两个主要部分:核心项目和UI项目来创建松散耦合,可维护和可测试的移动解决方案。
##核心项目
核心项目通常是一个.NET标准库,其中包含所有共享代码,包括:
- ViewModels:这些负责处理用户交互和业务逻辑。
- 模型:表示整个应用程序中使用的数据结构。
- 服务:提供对数据,Web服务或其他外部资源的访问。
- 转换器:用于数据类型转换。
- 应用程序类:这是负责初始化应用程序的业务逻辑和视图模型的。它还在控制器(IOC)容器倒置中处理自定义对象的注册。
-AppStart:可选地确定应用程序启动时首先显示的视图模型。
UI项目
UI项目是特定于平台的,包含用户界面元素和平台特定的代码。对于每个目标平台(例如iOS,Android),都有一个单独的UI项目。这些项目包括:- 视图:每个视图负责显示相应的视图模型。视图是使用本机平台工具(例如XAMAR.Forms.Forms,Axml for Android设计的)设计的视图。
- 本机应用处理程序:此处理本机生命周期事件。例如,在Android上,这将是“ MainActivity”或“ MainApplication”类,而在iOS上,它将是``AppDelegate''类。
- 设置类:这是负责引导MVVMCross和注册平台特定服务的。它初始化了MVVMCROSS框架,并设置了具有特定于平台的实现的IOC容器。
##核心和UI项目之间的互动
MVVM模式和框架的IOC容器促进了MVVMCross中核心和UI项目之间的相互作用。这是他们互动的方式:
- ViewModel绑定:UI项目使用MVVMCROSS绑定视图以查看模型。这通常是使用命名约定或用``[mvxviewfor(typeof(homeviewModel)))诸如属性的视图来完成的。
- 服务注入:核心项目定义了在每个平台上以不同方式实现的服务的接口。这些服务已在IOC容器中注册,并注入了视图模型,从而允许平台特定的功能而无需重复代码。
- 导航和演示文稿:MVVMCross提供了在视图模型和呈现视图之间导航的机制。该框架使用演示者(例如`imvxiosviewpresenter`,`imvxandroidviewpresenter`)来管理每个平台上如何显示视图。
通过将应用程序逻辑分为Core和UI项目,MVVMCross使开发人员能够在平台上最大化代码重复使用,同时仍允许特定于平台的自定义和优化[1] [3] [5]。
引用:[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
[3] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-usion-app-anp-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phote-phote-build-mvvm-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/