首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

跨平台开发框架 MvvmCross 初体验

MvvmCross 的代码同步好了之后, 默认的分支是 v3.0, 基于 PCL 104, 在 windows 系统上, 可以直接编译; 而在 Mac 系统上, 需要切换到分支 v3.1 , 这个分支基于...MvvmCross Core 项目必须包含一个 App 类, 继承自 MvxApplication , 负责 ViewModel 和逻辑代码的启动, 代码如下: using FirstMvxApp.ViewModels..., 只是在 Initialize 方法中注册 FirstViewModel 为默认启动的 ViewModel 。...添加一个 Setup 类, 负责 MvvmCross 在 iOS 应用中的启动, 代码如下: using Cirrious.MvvmCross.Touch.Platform; using MonoTouch.UIKit...这是 MvvmCross 中默认的基于约定的命名方式, 在运行时会自动将 FirstView 的 ViewModel 设置为 FirstViewModel 。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MvvmCross 框架中 ViewModel 之间的导航以及生命周期

    MvvmCross 框架中 ViewModel 之间的导航以及生命周期 介绍 MvvmCross (Mvx) 框架中的 ViewModel 之间的导航以及 ViewModel 的生命周期。...在 ViewModel 之间导航 Mvx 框架中, 用一个页面跳转到另一个页面, 对应的也会从一个 ViewModel 跳转到另外的 ViewModel , 页面间的跳转由 ViewModel 发起,...: public MyViewModel(IEmailService service) { ... } 如果 IEmailService 已经在 Mvx 容器中注册过了, IEmailService 对应的实例就会自动注入给...上面的三种形式的 Init 方法可以同时出现在一个 ViewModel 中, 不过推荐的是在一个应用中只是用一种风格的 Init 方法。...的 OnStart 方法中调用 ViewModel 的 Start 方法。

    83030

    .NET 基金会项目介绍-MvvmCross

    使用 Model-View-ViewModel (MVVM) 设计模式能够在多平台间使用一套代码共享业务逻辑。 MvvmCross 专门为 Xamarin 和移动设备生态设计。...channel Twitter 参与贡献 笔者简评 一套代码走天下的努力从未停止,这种努力是值得的。...此类框架总能在一定程度上解决多设备UI需要重复开发的窘境,不过往往随着业务复杂度的攀升,为了适配而产生的额外代码又无法避免。...不论如何,业务复杂度不会随着技术框架的选择而减低,它只会从一个地方转移到另外的地方。 开发者可以尝试并使用此框架减轻初期多重开发的困难,而随着团队和业务的演变,变化永远是不会停止的。...Share behavior and business logic in a single codebase across supported platforms, using the Model-View-ViewModel

    1.6K30

    MvvmCross 框架中的数据绑定语法

    MvvmCross 框架中的数据绑定语法 数据绑定一直是 MvvmCross (Mvx) 框架的核心, 随着 Mvx 版本的版本更新, 绑定语法由 Json 变化到了 Swiss 语法, 并逐渐向 Tibet...的默认实例; Text Order.Amount, Converter=Trim, ConverterParameter='£' 将 Text 属性绑定到 ViewModel 的 Order.Amount...的 Order.Amount , 并应用 Trim ValueConverter , Converter 的参数是字符串 '£' , 如果不能成功获取 Order.Amount 的值, 则显示 "N/...(one, two) 判断两个值的大小, 可以在绑定中使用 > 代替; 重要提示: 属性合成还处于开发中, 只是基本可以工作的原型, 在未来的版本中随时都可能变化。...语义绑定 在多值绑定与属性合成中已经见到了, Tibet 支持语义绑定, 比如: Value 100 * Ratio 将 Ratio 乘以 100 以转换成百分比, 再比如: Value Format(

    1.6K31

    Linux+Windows: 程序崩溃时,在 C++ 代码中,如何获取函数调用栈信息

    一、前言 二、Linux 平台 三、Windwos 平台 一、前言 程序在执行过程中 crash 是非常严重的问题,一般都应该在测试阶段排除掉这些问题,但是总会有漏网之鱼被带到 release 阶段。...因此,程序的日志系统需要侦测这种情况,在代码崩溃的时候获取函数调用栈信息,为 debug 提供有效的信息。...这篇文章的理论知识很少,直接分享 2 段代码:在 Linux 和 Windows 这 2 个平台上,如何用 C++ 来捕获函数调用栈里的信息。 二、Linux 平台 1....Windows 平台下的代码实现,参考了国外某个老兄的代码,如下: 1....利用以上几个神器,基本上可以获取到程序崩溃时的函数调用栈信息,定位问题,有如神助! ----

    5.9K20

    知识点 | ViewModel 四种集成方式

    下面的文章中,我将介绍 ViewModel 的四种集成方式: ViewModel 中的 Saved State —— 后台进程重启时,ViewModel 的数据恢复; 在 NavGraph 中使用 ViewModel...对应 Activity 实例被永久关闭; Activity 配置 (configuration) 被改变: 例如,旋转屏幕等操作,会使 Activity 需要立即重建; 应用在后台时,其进程被系统杀死:...SavedStateHandle 和 Bundle 一样,以键值对形式存储数据,它包含在 ViewModel 中,并且可以在应用处于后台时进程被杀死的情况下幸存下来。...设置 Save State 模块 现在让我们看看如何使用 SaveState 组件。注意接下来的代码会和 Lifecycles Codelab 第六步中的一段代码十分相似。...您可以用 Activity 创建一个 ViewModel 实例,然后从这个 Activity 中的任一个 Fragment 中获得 ViewModel 的引用: // 在Fragment的 onCreate

    2.6K20

    如何在 Swift 中取消一个后台任务

    本文演示了如何明确地取消一个任务,并展示了子任务是如何自动取消的。 该代码建立在在 Swift 中使用 async let 并行的运行后台任务中编写的AsyncLetApp之上。...一个取消按钮被添加到视图中,其点击事件是在ViewModel中调用取消方法。...在ViewModel中添加了一些日志记录,以便在文件下载增加时和文件isDownloading属性被设置为false时打印出来。...SwiftUI 中的子任务 在 SwiftUI 中取消和恢复后台任务 结论 在异步编程中,重要的是停止任何不需要的后台任务以节省资源并避免后台任务干扰应用程序的任何不良副作用。...另一种是简单地使用 isCancelled 作为布尔标志来查看任务是否已被取消。 在异步编程中,必须停止任何不需要的后台任务,以节省资源,并避免后台任务干扰App带来的任何不必要的副作用。

    2.8K30

    知识点 | ViewModel 四种集成方式

    下面的文章中,我将介绍 ViewModel 的四种集成方式: ViewModel 中的 Saved State —— 后台进程重启时,ViewModel 的数据恢复; 在 NavGraph 中使用 ViewModel...SavedStateHandle 和 Bundle 一样,以键值对形式存储数据,它包含在 ViewModel 中,并且可以在应用处于后台时进程被杀死的情况下幸存下来。...设置 Save State 模块 现在让我们看看如何使用 SaveState 组件。注意接下来的代码会和 Lifecycles Codelab 第六步中的一段代码十分相似。...每当数据更新时,要保存新的数据到 SavedStateHandle; 获取: 如代码中所示,调用 savedStateHandle.get(USER_KEY) 方法获取被保存的 userId。...您可以用 Activity 创建一个 ViewModel 实例,然后从这个 Activity 中的任一个 Fragment 中获得 ViewModel 的引用: // 在Fragment的 onCreate

    55020

    在 Android 和 Hilt 中限定作用域

    被限定作用域的类型在应用组件中沿 组件层次结构 向下传递: 在本案例中,相同的 UserManager 实例将被提供给层次结构内其余的 Hilt 组件。...在 Android 中,您不使用 DI 库也可以通过 Android Framework 来手动限定作用域。让我们看看如何手动限定作用域,以及如何改用 Hilt 来限定作用域。...通过使用 ViewModel 或者 Hilt 中的 ActivityRetainedScope 注解,您可以在系统设置更改后获得相同的实例 如果您希望在遵循良好的 DI 实践的同时,保留 ViewModel...点击查看 全部可用作用域。回到我们最初的示例,将作用域限定为 ApplicationComponent,等同于不使用 DI 框架时在 Application 类中持有该实例。...由于可以在 ViewModelProvider 中使用这些 ViewModel 工厂,使您获取 ViewModel 的方式变得更加灵活。

    1.4K20

    Caliburn.Micro Bootstrapper及IOC容器配置

    而我们在Bootstrapper中只在DisplayRootViewFor()中给定了一个主ViewModel的类型,那么CM是如何找到找到ViewModel和View并创建实例的?...CM获得View实例的方式 在配置IOC容器之前,我们先看看,CM获取实例的方式。清楚的知道CM在内部是如何使用IOC的,才能更好的配置IOC。...CM在创建ViewModel实例后,会先根据ViewModel类型全名获取View的类型名(根据设定的名称映射规则),然后根据View的类型名查找View类型并创建实例。...这样CM就可以从AssemblySource中获取View类型 View和Bootstrapper在同一个程序集。这样CM就可以用默认IOC.GetInstance静态方法创建一个View实例。...OnUnhandledException中添加程序中未处理的异常的处理方法。OnExit处理程序退出事件。 另外,在其他平台(非PC)及winform中应用略有不同,请查看官方帮助。

    94630

    ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

    onSaveInstanceState() 在配置更改期间和 activity 进入后台时被调用;在这两种情况下,如果你的数据被保存在 ViewModel 中,实际上并不需要重新加载或者处理他们。...我如何高效地使用 ViewModel 来保存和恢复 UI 状态? 简而言之,你可以混合使用 ViewModel、 onSaveInstanceState()、本地持久化。继续读看看如何使用。...另一方面,如果用户旋转手机或者 在activity 进入后台然后回来,用户希望搜索结果和他们想搜索的音乐仍存在,就像进入后台前那样。用户有数种途径可以使 activity 进入后台。...一些使用 ViewModels 、LiveData 为加载数据的方法: 在这篇文章中,Ian Lake 概述了如何使用 ViewModel 和 LiveData 来代替 AsyncTaskLoader。...随着代码变得越来越复杂,你可以考虑在一个单独的类里进行实际的数据加载。一个 ViewModel 类的目的是为 UI 控制器持有数据。

    1K20

    ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

    onSaveInstanceState() 在配置更改期间和 activity 进入后台时被调用;在这两种情况下,如果你的数据被保存在 ViewModel 中,实际上并不需要重新加载或者处理他们。...我如何高效地使用 ViewModel 来保存和恢复 UI 状态? 简而言之,你可以混合使用 ViewModel、 onSaveInstanceState()、本地持久化。继续读看看如何使用。...一些使用 ViewModels 、LiveData 为加载数据的方法: 在这篇文章中,Ian Lake 概述了如何使用 ViewModel 和 LiveData 来代替 AsyncTaskLoader。...随着代码变得越来越复杂,你可以考虑在一个单独的类里进行实际的数据加载。一个 ViewModel 类的目的是为 UI 控制器持有数据。...如果你有关于 ViewModel 或者任何架构组件的问题,请查看我们的反馈页面。关于本系列的任何问题,敬请留言。

    3.8K30

    在 Android 开发中使用协程 | 代码实战

    以此为背景,我们认为使用协程是在处理后台任务和简化 Android 回调代码的绝佳方案。 目前为止,我们主要集中在介绍协程是什么,以及如何管理它们,本文我们将介绍如何使用协程来完成一些实际任务。...在这篇文章中,我们将会深入介绍一次性请求,并探索如何在 Android 中使用协程实现它们。 一次性请求 一次性请求会调用一次就请求一次,获取到结果后就结束执行。...在一次性请求中,数据层只提供挂起函数,调用方如果想要获取最新的值,只能再次进行调用,这就像浏览器中的刷新按钮一样。...它使用了 Mutex,可以把它理解为一张单程票 (或是锁),协程在必须要获取锁才能进入代码块。...我们实现了如何在 ViewModel 中启动协程,然后在 Repository 和 Room Dao 中提供公开的 suspend function,这样形成了一个完整的编程范式。

    1.2K10
    领券