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

MvvmCross Xamarin错误在IOS中找不到ViewModel的视图

基础概念

MvvmCross 是一个跨平台的 MVVM(Model-View-ViewModel)框架,主要用于 Xamarin 应用程序的开发。MVVM 模式将应用程序分为三个主要部分:

  1. Model:负责数据管理和业务逻辑。
  2. View:负责显示数据和用户界面。
  3. ViewModel:作为 Model 和 View 之间的桥梁,负责处理 View 的逻辑并提供数据。

相关优势

  • 跨平台:MvvmCross 支持 Xamarin,可以在多个平台上运行。
  • 解耦:MVVM 模式使得 View 和 Model 之间的耦合度降低,便于维护和测试。
  • 可重用性:ViewModel 可以在不同的 View 中重用,提高了代码的可重用性。

类型

MvvmCross 主要有以下几种类型:

  • MvxView:Xamarin.Forms 中的 View。
  • MvxViewController:Xamarin.iOS 中的 View。
  • MvxActivity:Xamarin.Android 中的 View。
  • MvxViewModel:ViewModel 的基类。

应用场景

MvvmCross 适用于需要跨平台开发的移动应用程序,特别是在需要快速迭代和维护的项目中。

问题原因及解决方法

在 iOS 中找不到 ViewModel 的视图,通常是由于以下原因:

  1. 命名约定:MvvmCross 遵循一定的命名约定,View 和 ViewModel 之间的命名需要匹配。例如,如果 ViewModel 是 MyViewModel,那么 View 应该是 MyView
  2. 注册 ViewModel:在 iOS 中,需要手动注册 ViewModel。确保在 AppDelegate.csStartup.cs 中正确注册了 ViewModel。
  3. 绑定问题:确保在 View 中正确绑定了 ViewModel。

示例代码

假设我们有一个 MyViewModel 和一个 MyView,以下是如何在 iOS 中正确注册和使用 ViewModel 的示例:

代码语言:txt
复制
// AppDelegate.cs
public override void FinishedLaunching(UIApplication app, NSDictionary options)
{
    base.FinishedLaunching(app, options);

    var setup = new Setup(this, Window);
    setup.Initialize();

    var presenter = setup.Services.GetRequiredService<IMvxIosViewPresenter>();
    presenter.Show(rootViewModel: new MyViewModel());
}

// MyView.cs
public partial class MyView : MvxViewController<MyViewModel>
{
    public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        // 绑定 ViewModel 到 View
        var set = this.CreateBindingSet<MyView, MyViewModel>();
        set.Bind(txtName).To(vm => vm.Name);
        set.Apply();
    }
}

参考链接

通过以上步骤,你应该能够解决在 iOS 中找不到 ViewModel 的视图的问题。如果问题仍然存在,请检查日志和绑定设置,确保所有配置都正确无误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • MvvmCross 框架数据绑定语法

    MvvmCross 框架数据绑定语法 数据绑定一直是 MvvmCross (Mvx) 框架核心, 随着 Mvx 版本版本更新, 绑定语法由 Json 变化到了 Swiss 语法, 并逐渐向 Tibet...Mvx 实现了跨平台数据绑定, 概念与 WPF/Silverlight/WinPhone (Xaml) 数据绑定一致, 可以 Android 和 iOS 平台使用, 这也正是 Mvx 框架魅力所在...先来看一个最基本绑定, 将视图 View 属性 $Target$ 绑定到数据模型 ViewModel 属性 $SourcePath$ , 如下所示: $Target$ $SourcePath$ 通常情况下...Fluent 绑定, 还可以使用基于字符串 fluent 绑定, 绑定视图事件或者视图属性没有被暴露成 c# 属性时非常有用。...(one, two) 判断两个值大小, 可以绑定中使用 > 代替; 重要提示: 属性合成还处于开发, 只是基本可以工作原型, 未来版本随时都可能变化。

    1.6K31

    .Net 跨平台可移植类库正在进行

    总而言之,可移植类库开始被广泛应用,越来越多支持移植类库被发布,并且跨平台应用程序,MVVM模式正被证明是一种非常棒最大化代码共享方式。...上周已经发布了5.0版本,这是一个“完全友好性”可移植版本,并且支持以下平台: Xamarin iOS Xamarin Android Xamarin Mac .Net 4.5(WPF) Windows...此外,请你一定要先看看我Xamarin Evolve会议演讲(c#如何拯救了我婚姻)。现在我将要谈谈可移植类库。...另一个用了MVVMCross跨平台应用是Aviva Drive。这是一个保险公司app,你可以用来跟踪你驾驶习惯,从而很有希望保险费上获取这款。...这里有一个用于SignalR 客户端类库样本报告。它最棒部分在于,不用给Xamarin发送你代码或者二进制文件,就能够做所有的分析。这些全部都是浏览器上进行。我非常喜欢Xamarin了。

    1.7K90

    Xcode 5 xib 文件格式调整

    Xcode 5 xib 文件格式调整 Xcode 升级到 5 之后, iOS xib 文件发生了变化, 导致 Xamarin Studio 自带 iOS ViewController 模板出错了..., 本文分析发生错误, 并给出对应解决方法。...界面设计器, 看到第第一个对象是 View 。 上面的 xib 文件 MonoTouch 下运行没有任何问题。 Xcode 更新到 5.x 之后, 默认 xib 文件如下: <?...上面的异常时说找不到参数类型为 IntPtr 构造函数, 我们添加一个接受 IntPtr 类型构造函数, 如下所示: public NewViewController(IntPtr handle)...注意: 使用 MvvmCross 也可能会遇到同样问题, 这就需要重写 mvx 默认 MvxTouchViewsContainer CreateViewOfType 方法 (默认只简单通过反射创建

    1.3K20

    我是如何从Web开发转向移动开发

    我一直以来创建都是Web应用程序,直到最近…… 几个月前,我开始用Android和iOS来开发移动应用程序,然后多亏Xamarin,我依然可以使用C#。...分离关注点也不同,不再有Model View Controller(MVC),使用是Model View ViewModel(MVVM)模式。...即使我已经用过(WPF和Windows Phone),但并不是同一水平,我仍然有很多东西需要学习。...我需要处理两个我完全不曾涉足生态系统(Android和iOS),两个我一无所知框架(XamarinMvvmCross)和一些并不容易满足业务需求。不过,幸运是,至少我知道如何使用C#。...对了,以后我会分享一些Xamarin技巧和窍门。 希望下次再见!

    1.3K60

    .NET MAUI:跨平台应用开发全方位指南

    NET MAUI 是微软继 Xamarin.Forms 之后推出新一代跨平台应用开发框架,目标是通过一套代码库支持 iOS、Android、Windows 和 macOS 四大平台。...二、.NET MAUI 架构 .NET MAUI ,核心架构仍然基于 MVU(Model-View-Update)和 MVVM(Model-View-ViewModel)两种常见设计模式。...MVU 适用于具有复杂状态管理需求应用。2. MVVM 模式MVVM 模式是大多数开发者较为熟悉模式,尤其是 WPF 和 Xamarin.Forms 开发。...实现业务逻辑 ViewModel 实现用户登录逻辑,并绑定到界面:public class MainPageViewModel : INotifyPropertyChanged{ public...以下是一些常见性能优化技巧:减少视图层级:复杂视图层级会影响应用渲染性能,尽量简化布局层级。懒加载和异步加载:使用 Task 和 async/await 实现懒加载,避免主线程阻塞。

    1K10

    .NET 基金会项目介绍-Prism

    Prism Prism 是一个开发框架,它为实现可维护、可扩展、可测试 XAML 应用程序提供助力,可以应用于 WPF、 Xamarin、 Windows Store 应用和 Windows 10...Prism 帮助开发者实现了多种设计模式以及原则,包括有 Model-View-ViewModel (MVVM)、依赖注入、模块化设计、UI 组件化、命令模式和事件推送订阅机制。...Prism 起初由 Microsoft patterns & practices 团队开发,后来 2015 年时交由现在正在维护该该项目的 Prism 开源团队。...helps application developers implement multiple design patterns and principles including Model-View-ViewModel...【机器学习框架】 Cecil - 【语言底层项目】 Mono - 【语言跨平台底层项目】 MSBuild - 【本地自动化框架】 MVVM Light Toolkit - 【客户端MVVM开发框架】 MvvmCross

    1.3K00

    .NET 基金会项目介绍-Xamarin.Mobile

    Xamarin.Mobile 是属于 .Net 基金会一个项目,本文将简要介绍该项目相关信息。 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译、如与原文存在出入,请以原文为准。...Xamarin.Mobile Xamarin.Mobile 包包含有一些移动设备( iOS、Android 和 Windows Phone)通用功能特性 API ,例如:读取用户地址簿,调用相机等等。...项目的目标是较少开发者开发不同平台是差异性,使得开发更快更简单。...系列一个基础,为不同设备平台提供一个公共 API 层,很好解决差异性。...【机器学习框架】 Cecil - 【语言底层项目】 Mono - 【语言跨平台底层项目】 MSBuild - 【本地自动化框架】 MVVM Light Toolkit - 【客户端MVVM开发框架】 MvvmCross

    76000

    再见Xamarin,微软官宣跨平台 UI 框架 MAUI

    多年来,UPS,Ernst&Young 和 Delta 等公司一直利用 .NET 上 Xamarin 来推动其业务发展。...MAUI将在所有这些版本可用,并支持现有的MVVM和XAML模式以及将来功能,例如使用C#甚至是Blazor模型视图更新(MVU)。...MVVM Model-View-ViewModel(MVVM)和 XAML 是 .NET 开发人员数十年来主要模式和实践,它们是MAUI一流功能,这将继续发展,以帮助您高效地构建和维护生产应用程序...从 Xamarin.Forms 过渡到 .NET MAUI Xamarin.Forms 开发人员将使用他们已经了解和喜爱所有相同控件和 API 来开始 .NET MAUI 中使用新项目运行。...XamarinXamarin.Forms 未来是什么 作为我们.NET统一一部分,Xamarin.iOSXamarin.Android将作为.NET for iOS和.NET for Android

    12K20

    .NET 官宣跨平台 UI 框架 MAUI

    多年来,UPS,Ernst&Young 和 Delta 等公司一直利用 .NET 上 Xamarin 来推动其业务发展。...MAUI将在所有这些版本可用,并支持现有的MVVM和XAML模式以及将来功能,例如使用C#甚至是Blazor模型视图更新(MVU)。...MVVM Model-View-ViewModel(MVVM)和 XAML 是 .NET 开发人员数十年来主要模式和实践,它们是MAUI一流功能,这将继续发展,以帮助您高效地构建和维护生产应用程序...从 Xamarin.Forms 过渡到 .NET MAUI Xamarin.Forms 开发人员将使用他们已经了解和喜爱所有相同控件和 API 来开始 .NET MAUI 中使用新项目运行。...XamarinXamarin.Forms 未来是什么 作为我们.NET统一一部分,Xamarin.iOSXamarin.Android将作为.NET for iOS和.NET for Android

    3.8K20

    .NET 基金会项目介绍-Protobuild

    使用 Protobuild 您可以将一个项目的生成目标设置为 Windows, Linux, Mac, iOS, tvOS, Android, Ouya, Windows 8, Windows Phone...项目详情 官方网站 项目源码 项目许可证: MIT 项目联系人: June Rhodes 相关链接 开发文档 笔者简评 以前 csproj 模板还没有升级之前,想要生成不同目标的 C# 类库,需要准备多份不同项目文件...With Protobuild, you can have a project target Windows, Linux, Mac, iOS, tvOS, Android, Ouya, Windows...【机器学习框架】 Cecil - 【语言底层项目】 Mono - 【语言跨平台底层项目】 MSBuild - 【本地自动化框架】 MVVM Light Toolkit - 【客户端MVVM开发框架】 MvvmCross...- 【移动端身份认证工具库】 Xamarin.Mobile - 【移动端工具库】 xUnit.net - 【单元测试框架】

    1.2K00

    Reactive UI -- 反应式编程UI框架入门学习 (转载非原创)

    Reactive UI Reactive UI 是一种反应式编程跨平台MVVM框架,支持Xamarin Forms、Xamarin.iOSXamarin.Android、Xamarin.Mac、Tizen...MVVMLight,依赖属性和命令绑定一般都是放在Xaml,并且大部分情况下不需要给控件定义Name属性。...强绑定方式,需要给控件定义他Name属性。 1 界面后台cs文件中使用强绑定方式。...12 //BtnContent是ViewModel属性,btnOpenFile是界面控件,并指定控件需要绑定依赖属性 this.OneWayBind(ViewModel, vm => vm.BtnContent..., vw => vw.btnOpenFile.Content);  Reactive UI框架,提供了单向绑定和双向绑定两种绑定类型,上述代码OneWayBind是属于ViewModel->View

    2.2K20

    软考高级架构师:MVVM 架构风格概念和例题

    一个典型应用场景是开发具有复杂用户界面的应用程序时,如使用XAMLWPF、Silverlight、Xamarin或者是使用HTML和JavaScriptWeb应用程序。...作为Model和View之间中介,处理视图逻辑 D. 直接操作数据库或数据源 MVVM模式,Model是负责: A. 数据展示 B. 用户界面交互 C. 业务逻辑处理和数据管理 D....转换数据模型 MVVM架构,当数据模型发生改变时,更新UI工作是由谁来完成? A. Model B. View C. ViewModel D....所有类型应用程序都不适用 MVVMViewModel可以直接操作数据库吗? A. 是 B. 否 C. 只有特定情况下 D....MVVM架构,当数据模型发生改变时,更新UI工作主要是由ViewModel来完成ViewModel将监听到数据变更转换为视图可以直接使用数据,然后通知View更新界面。

    19900

    一篇可能会让你爱上MVVM与ReactiveCocoa文章

    MVVM由于缺乏框架级别的支持,所以iOS开发中一直似乎是很鸡肋式存在.直到出现了ReactiveCocoa!...安装 2.5版本ReactiveCocoa来自己项目中使用,具体细节参见: ReactiveCocoa,最受欢迎iOS函数响应式编程库(2.5版),没有之一!...余下"VM",其实是一个整体,指的是ViewModel,视图数据模型.如果你以前许多代码都放在Model,比如没有数据自动联网请求相关数据什么的话,那你那个Model其实和这个ViewModel...必须指出一点是: ViewModel是为View服务,它命名和字段定义应该根据View需要来进行.本例是一个非常简单场景.复杂场景,一个model可能对应多个viewModel,此时多个视图可能都是同一种数据不同展示方式...注意需要在初始化时设置 introl和modeltitle,desc属性级联关系(我喜欢这么称呼,意会,有点重写getter方法感觉).这一步本来是Controller完成,现在挪到了 ViewModel

    1.3K60
    领券