国外都在用的跨平台MVVM框架-MvvmCross

国外都在用的跨平台MVVM框架-MvvmCross

2022-10-10 0 777
资源编号 44910 最近更新 2022-10-10
¥ 0人民币 升级VIP
立即下载 注意事项
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 模板修改 源码安装

本期推荐MvvmCross 是一个跨平台的 MVVM 框架,使开发人员能够创建强大的跨平台应用程序。

国外都在用的跨平台MVVM框架-MvvmCross

MvvmCross 是一个跨平台的 MVVM 框架。它使开发人员能够在Xamarin.iOS、Xamarin.Android、Xamarin.Mac、Xamarin.Forms、通用 Windows 平台 (UWP) 和 Windows Presentation Framework (WPF)上使用 MVVM 模式创建应用程序。这允许您在平台之间共享行为和业务逻辑,从而实现更好的代码共享。

功能特性

  • ViewModel 到 View 绑定使用自己的可定制绑定引擎,它允许您为自己的自定义视图创建自己的绑定定义
  • ViewModel 到 ViewModel 导航,帮助您分享有关如何以及何时导航的行为
  • 通过依赖注入和属性注入实现控制反转
  • 插件框架,可以让您插入很酷的东西,如 GPS 定位、本地化、传感器、绑定扩展和大量 3rd 方便插件选择

MvvmCross 为您提供的高级功能是:

  • MVVM 架构模式
  • 导航系统
  • 数据绑定
  • 平台细节支持
  • 控制容器反转和依赖注入引擎
  • 很多常用功能的插件
  • 单元测试助手

MvvmCross 概述

部署的 MvvmCross 应用程序由两部分组成:

  • “核心” – 包含所有 ViewModel、服务、模型和“业务”代码
  • “UI” – 包含与“Core”交互的视图和平台特定代码

或者,您可以将代码拆分为更多项目/程序集,以提高可重用性和解耦层。

对于多平台的应用程序,通常有:

  • 一个“核心”项目,编写为 .NET 标准库
  • 每个平台的“UI”项目,作为当前目标平台的本机项目编写。
  • (可选)一些其他项目,可能是 .NET Standard 或平台库,它们提供可重用的抽象或特定功能。
国外都在用的跨平台MVVM框架-MvvmCross

MvvmCross 应用程序如何启动

当 MvvmCross 应用程序启动时,实际情况如下:

  • 平台启动过程触发。
  • 在平台应用程序的构建中,Setup创建了 MvvmCross。
  • Setup分两步执行框架初始化 :InitializePrimary:在主同步上下文(又名主线程)上运行。初始化 IoC、Logging 机制等核心部分。InitializeSecondary:在后台运行(从不在主线程上)。构造一些其他平台服务,如绑定、App类和对其的调用Initialize。它最终注册 Views / ViewModels 查找。
  • 调用时App.Initialize,您的应用程序应提供一个AppStart对象,该对象负责管理第一个导航步骤。Setup初始化的最后一步是调用AppStart.Startup(object hint).
  • AppStart.Startup(object hint)运行并显示您的应用程序的第一个 ViewModel / View。

注意:如果您想知道方法hint上的参数Startup,您可以使用它来将初始参数从您的平台项目传递到您的核心层。例如,在实现推送通知时非常有用。

MvvmCross“应用”类

MvvmCrossApp类不应与ApplicationDelegateiOS 中的,或与ApplicationAndroid 或 Windows 中的对象混淆。这些是原生的、SDK 提供的对象,而这一类旨在位于代码的公共部分。

App是否可以注册一个IMvxAppStart对象并将您自己的位注册到 IoC。这就是它通常的样子:

using MvvmCross.Ioc;

namespace MyName.Core
{
    public class App : MvvmCross.Core.ViewModels.MvxApplication
    {
        public override void Initialize()
        {
            CreatableTypes()
                .EndingWith("Service")
                .AsInterfaces()
                .RegisterAsLazySingleton();

            RegisterAppStart<ViewModels.MainViewModel>();
            // if you want to use a custom AppStart, you should replace the previous line with this one:
            // RegisterCustomAppStart<MyCustomAppStart>();
        }
    }
}

在此代码片段中,第一行对 IoC 容器进行批量注册。它查看当前Assembly(“核心”程序集)并使用反射来注册所有Service以延迟构造的单例结尾的类。

视图模型

ViewModels是 MVVM 模式的关键对象。这些通常应该包含用于管理状态和操作的代码。顾名思义,ViewModel 是提供属性和要使用的命令的视图抽象。

使用 MvvmCross 时,所有的 ViewModel 都应该继承自MvxViewModel. 这些通常应该包含:

  • 引发更改的 C# 属性
  • 命令
  • 用于管理操作的私有方法

这就是典型的ViewModel样子:

public class MainViewModel : MvxViewModel
{
    public MainViewModel()
    {
    }

    public override void Prepare()
    {
        // This is the first method to be called after construction
    }
        
    public override Task Initialize()
    {
        // Async initialization, YEY!
            
        return base.Initialize();
    }
        
    public IMvxCommand ResetTextCommand => new MvxCommand(ResetText);

    private void ResetText()
    {
        Text = "Hello MvvmCross";
    }

    private string _text = "Hello MvvmCross";
    public string Text
    {
        get { return _text; }
        set { SetProperty(ref _text, value); }
    }
}

这MainViewModel有:

  • Text更改时引发PropertyChanged通知的属性
  • 每当执行命令时都会ResetTextCommand调用的命令。ResetText()

MvvmCross 包

MvvmCross 是一个非常可扩展的框架。社区已经做了很多你可以使用的东西。在此页面上,您将找到当前可用的 MvvmCross nuget 包。

国外都在用的跨平台MVVM框架-MvvmCross

安卓X

国外都在用的跨平台MVVM框架-MvvmCross

插件

国外都在用的跨平台MVVM框架-MvvmCross

数据绑定

核心 Windows 数据绑定

  • C# 属性用于 View 和 ViewModel
  • 单个 View 属性被“绑定” – 连接 – 到 ViewModel 属性
  • 指定了一个模式,它给出了数据流的方向(单向、双向等)
  • 可以选择使用 ValueConverter 指定 – 这也可以选择参数化
  • 也可以选择在绑定失败时使用 FallbackValue 指定。

C# 属性和数据绑定

C# 属性用于 View 和 ViewModel 上的数据绑定。

在 ViewModel 上,这些属性通常如下所示:

private string _myProperty;
public string MyProperty
{
    get => _myProperty;
    set
    {
        _myProperty = value;
        RaisePropertyChanged(() => MyProperty);
        // take any additional actions here which are required when MyProperty is updated
    }
}

注意: MvvmCross 提供了辅助方法来分配支持字段并PropertyChanged在检查值是否实际更改后触发事件。考虑使用SetProperty()这个,它存在于MvxViewModel和上MvxPropertyChanged。此模式使用本地私有支持变量来存储当前值,并依赖于RaisePropertyChanged向任何侦听视图发出值变化的信号。

数据绑定属性

使用上述 View 和 ViewModel 属性,通常使用 ViewModel C# 属性对 View 属性的值进行建模。

例如:

  • 如果您的视图包含CheckBox具有IsChecked属性的
  • 那么您的 ViewModel 可能包含一个属性:
private bool _rememberMe;
public bool RememberMe
{
    get => _rememberMe;
    set => SetProperty(ref _rememberMe, value);
}
  • 那么绑定可能会IsChecked在 View 上与RememberMeViewModel 中连接在一起。

—END—

开源协议:MS-PL License

资源下载此资源为免费资源立即下载

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 免费源码 国外都在用的跨平台MVVM框架-MvvmCross https://www.7claw.com/44910.html

分享免费的开源源码

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、七爪会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、七爪无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在七爪上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于七爪介入快速处理。
查看详情
  • 1、七爪作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与互站无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务