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

使用类引用MVVM light中的视图模型定位器

MVVM Light是一个轻量级的MVVM框架,用于帮助开发者构建基于MVVM模式的应用程序。它提供了一些方便的工具和类,其中包括视图模型定位器(ViewModelLocator)。

视图模型定位器是一种设计模式,用于在应用程序中定位和管理视图模型的实例。它允许开发者通过在视图中引用定位器来获取视图模型的实例,而不需要直接实例化视图模型。这样做的好处是可以实现视图和视图模型的解耦,提高代码的可维护性和可测试性。

在MVVM Light中,使用类引用视图模型定位器可以通过以下步骤实现:

  1. 首先,在应用程序的启动代码中,创建一个全局的视图模型定位器实例。可以使用MVVM Light提供的SimpleIoc容器来实现,例如:
代码语言:csharp
复制
var viewModelLocator = new ViewModelLocator();
SimpleIoc.Default.Register<ViewModelLocator>(() => viewModelLocator);
  1. 在需要使用视图模型的地方,通过类引用视图模型定位器来获取视图模型的实例。例如,在一个WPF窗口的代码-behind中:
代码语言:csharp
复制
var viewModelLocator = SimpleIoc.Default.GetInstance<ViewModelLocator>();
var mainViewModel = viewModelLocator.MainViewModel;

上述代码中,MainViewModel是视图模型定位器中的一个属性,用于获取主视图模型的实例。

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

相关·内容

C# WPF MVVM开发框架Caliburn.Micro入门介绍①

Micro对这些模式实现是Caliburn模式演变,支持执行任何类型,而不仅仅是IScreen实现。这些改进正在重新引入Caliburn。...这种上下文信息支持一种松散耦合声明性机制,通过这种机制,演示者或视图模型可以与其视图进行通信,而无需在任何时候保持对视图引用。...View 定位器 对于应用程序每个ViewModel,Caliburn.Micro都有一个基本策略来定位应该渲染它视图。我们是根据命名约定来做这件事。...此外,通过在Xaml附加View.Context,我们支持同一视图模型多个视图。...Window Manager窗口管理器 此服务提供以视图模型为中心窗口显示方式(SilverlightChildWindow、WPFWindow、Windows Phone自定义本机样式主机

1.7K20
  • 如何构建Android MVVM应用程序

    Fragment)引用,然后在Presenter调用View暴露接口对视图进行操作,这样有利于把视图操作和业务逻辑分开来。...数据驱动 在MVVM,以前开发模式必须先处理业务数据,然后根据数据变化,去获取UI引用然后更新UI,通过也是通过UI来获取用户输入,而在MVVM,数据和业务逻辑处于一个独立View Model...这些就需要我们做一些工作和简单封装。MVVM Light Toolkit 已经帮我们做了一部分工作,详情可以查看MVVM Light Toolkit 使用指南。...由 图 1 ViewModel模块我们可以看出ViewModel下面一般包含下面5个部分: Context (上下文) Model (数据模型Bean) Data Field (数据绑定) Command...Light Toolkit 使用指南,里面有比较详细讲解Command使用

    1.3K10

    当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?

    ---- MVVM,当然三层——M-V-VM。就凭这个“三层”结构,WPF/UWP 开发者们就能折腾出一个完整程序出来。M——定义数据模型啊,V——视图啊,VM——视图模型。...于是那么多代码写到哪里呢? 答案:MVVM 之外。 ---- 我们代码不止 MVVM 三层 MVVM 不是应用程序架构,只是一个 GUI 程序开发模式而已。...MVVM 只是数据驱动型 GUI 程序建议开发模式;无论是三层哪一层,本质上都是在解决 UI 问题。 而非 UI 问题根本就不在 MVVM 讨论之列。...VM,视图模型。其本质是模型。什么模型?“视图模型。这是为真实 UI 做一层抽象模型。也就是说,VM 其实是“抽象 UI”。...创建多个 View 时候,这些 View 能够完全一致而不用把此前逻辑再跑一边 无论如何都不能引用 View,就算是接口也不行 注意不要去调用一些单例或者带状态静态,这样才好进行单元测试 Model

    89410

    用代码手把手教你使用MVVM

    网上关于MVVM框架搭建和使用文章很少,大多提到MVVM框架,就是在介绍DataBinding使用。对于MVVM各模块之间如何划分,如何定义,又是如何配合实现高度解耦文章更是少之又少。...XML视图功能太弱,我们大量处理View逻辑只能写在Activity,这样Activity就充当了View和Controller两个角色,直接导致Activity代码臃肿、混乱,导致阅读困难、重用困难和维护困难...ReplyCommand去处理就行了,ReplyCommand会把你可能需要数据带给你,这使得我们在ViewModel层处理事件时候只需要关心处理数据就行了,具体见MVVM Light Toolkit...包名.名 name为type实体定义“名字”,供以下布局中使用 定义了data属性后,就相当于xml布局已和实体绑定 在控件引用实体类属性格式为: @{实体.属性名} 在控件引用实体方法格式为...: @{实体.方法名} 涉及到图片加载:在实体使用@BindingAdapter注解图偏加载方法,在布局引用url即可 因为本篇文章重点在于讲述MVVM框架使用,所以DataBinding只进行粗略简介

    1.9K20

    Knockout.Js官网学习(简介)

    MVP 里M 其实和MVC里M是一个,都是封装了核心数据、逻辑和功能计算关系模型,而V是视图(窗体),P就是封装了窗体所有操作、响应用户输入输出、事件等,与MVC里C差不多,区别是MVC...比如Binding,在程序,你可能看到BindingSource是某个interface类型变量,实际上,这个interface变量引用对象才是真正数据源。   ...MVVM优点 MVVM已在微软WPF/Silverlight/WP7广泛应用,和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点 1. 低耦合。...开始使用Knockout.js  如果你建立像asp.net mvc 4.0这样Web应用程序,那么你可以不用任何操作即可以使用Knockout.js,如果你建立其他项目或许需要引用该类库。...1.我们首先需要引用库src="~/Scripts/knockout-2.3.0.debug.js" 2.定义myViewModel组件对象,并包含一个myValue属性。

    2.3K20

    豆瓣电台WP7客户端 MVVM重构记录之使用MVVM Light实现数据绑定

    最近面试多次被问及MVVM,虽然看过园子里教程,毕竟未实际实现过,都回答“只了解,未实践过”。今天终于逼自己去用MVVM重构下这个应用。 这里就不多说MVVM理论等东西了。...需要了解搜一下园子吧,大把大把! 这次我选择了MVVM Light框架去实现MVVM。我也没用过其他框架,也不知道有什么特别的地方或者优势,使用MVVM Light也全听别人说不错。...在ViewModel文件夹下右键新建,选择MVVM Light为我们提供模板:MvvmViewModel(wp7)。 新建一个叫ChannelTileViewModel。...然后在项目目录下新建一个MvvmViewModelLocator,还是使用MVVM Light模板: using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Ioc...Light基本实现了数据绑定功能。

    77220

    “终于懂了“系列:Jetpack AAC完整解析(四)MVVM - Android架构探索!

    点击上方胡飞洋可以关注哦~ 前面三篇介绍了Jetpack 架构组件 最重要 部分:生命周期组件-Lifecycle、感知生命周期数据组件-LiveData、视图模型组件-ViewModel。...二、Android开发架构 具体到Android开发,开发架构就是描述 视图层、逻辑层、数据层 三者之间关系和实施: 视图层:用户界面,即界面的展示、以及交互事件响应。...2.3 MVVM MVVM,Model-View-ViewModel,职责分类如下: Model,模型层,即数据模型,用于获取和存储数据。...View,视图,即Activity/Fragment ViewModel,视图模型,负责业务逻辑。 注意,MVVM这里ViewModel就是一个名称,可以理解为MVPPresenter。...应用其他组件可以使用此存储器监控对象更改,而无需在它们之间创建明确且严格依赖路径。

    2K20

    iOS面试题:MVVM和MVC区别

    业务逻辑很明显不归入view,视图本身没有任何业务。 C:控制器controller。Controller是app“胶水代码”:协调模型视图之间所有交互。...控制器负责管理他们所拥有的视图视图层次结构,还要响应视图loading、appearing、disappearing等等,同时往往也会充满我们不愿暴露model模型逻辑以及不愿暴露给视图业务逻辑...都不能直接引用model,而是引用视图模型(viewModel) viewModel 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码地方 使用MVVM会轻微增加代码量,但总体上减少了代码复杂性...2.2 MVVM 注意事项 view 引用viewModel ,但反过来不行(即不要在viewModel引入#import UIKit.h,任何视图本身引用都不应该放在viewModel)(PS...:基本要求,必须满足) viewModel 引用model,但反过来不行* MVVM 使用建议 MVVM 可以兼容你当下使用MVC架构。

    1.4K30

    “老坛泡新菜”:SOD MVVM框架,让WinForms焕发新春

    WinForm 示例程序主程序,视图所在程序集 WinFormMvvm.Model:      模型程序集 WinFormMvvm.ViewModel:  视图模型程序集 搭建好解决方案图如下:...接下来就是操作此用户实体数据上下文了,用户模型展示了如何使用它,但是它定义却很简单: class LocalDbContext : DbContext { public...创建MVVM视图模型 视图模型是对视图一个抽象,它封装了主要视图处理逻辑,与MVPPresenter不同,视图模型并不会包含详细视图元素抽象,比如一个抽象列表控件,而是对视图可能用到数据进行封装...在本例,我们用户视图模型功能也很简单,就是提供视图需要用户列表和响应视图增加,修改,删除用户命令,详细代码如下 public class SubmitedUsersViewModel...运行解决方案 经过上面的过程,我们添加了视图元素,设置好了视图元素数据绑定,创建了模型视图模型对象,一个简单MVVM示例程序就好了,下面是运行效果图: ?

    3.8K60

    WPF面试题-来自ChatGPT解答

    MVVM 优势 MVVM模式具有以下几个优势: 分离关注点:MVVM模式将应用程序用户界面(视图)与业务逻辑(模型)分离,通过视图模型(ViewModel)进行交互。...开发者可以专注于视图模型开发,而不需要关注它们之间交互逻辑。 可重用性:MVVM模式鼓励将业务逻辑放在模型,将视图逻辑放在视图模型。...数据绑定:MVVM模式支持双向数据绑定,使得视图模型之间数据同步更加方便。开发者只需要在视图视图模型之间建立绑定关系,就可以实现数据自动更新。...MVVM 特性列表 清晰分层结构:MVVM模式将应用程序分为模型视图视图模型三个层次,使得代码组织结构更加清晰明了,易于理解和维护。...可扩展性:MVVM模式支持通过添加新视图视图模型来扩展应用程序功能。由于视图视图模型之间松耦合关系,可以更容易地引入新功能模块,而不会对现有的代码产生太大影响。

    40430

    聊聊iOS开发之MVVM架构设计

    对于一个界面来说,有时候View和ViewModel往往不止一个,MVVM也可以组合使用MVVM 基本概念 - 在MVVM ,view 和 view controller正式联系在一起,我们把它们视为一个组件...- view 和 view controller 都不能直接引用model,而是引用视图模型(viewModel) - viewModel 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码地方...- view 引用viewModel ,但反过来不行(即不要在viewModel引入#import UIKit.h, 任何视图本身引用都不应该放在viewModel)(PS:基本要求,必须满足...视图控制器通过使用viewModel上banners和dataSource数组对象来配置表格视图(tableView)tableViewHeader和cell。...可以看出视图 SUGoodsCell直接引用模型SUGoods,这就有悖了MVVM初衷:view和 view controller 都不能直接引用model,而是引用视图模型(viewModel)

    8.8K92

    Angular与MVVM框架

    MVVM核心原理 MVVM模式是Model-View-ViewMode(模型-视图-视图模型)模式简称,其最早出现在微软WPF和Silverlight框架。...MVVM模式利用框架内置双向绑定技术对MVP(Model-View-Presenter)模式变型,引入了专门ViewModel(视图模型)来实现View和Model粘合,让View和Model进一步分离和解耦...下图是angular关于MVVM模式运用: 在angularMVVM模式主要分为四部分: View:它专注于界面的显示和渲染,在angular则是包含一堆声明式Directive视图模板。...注入器是一个负责查找和创建依赖服务定位器。...对于像游戏和有图形界面的编辑器之类应用,会进行频繁且复杂DOM操作,和CRUD应用不同。因此,可能不适合用Angular来构建。在这种场景下,使用更低抽象层次库可能会更好。

    3.9K90

    Angular与MVVM框架

    MVVM核心原理 MVVM模式是Model-View-ViewMode(模型-视图-视图模型)模式简称,其最早出现在微软WPF和Silverlight框架。...MVVM模式利用框架内置双向绑定技术对MVP(Model-View-Presenter)模式变型,引入了专门ViewModel(视图模型)来实现View和Model粘合,让View和Model进一步分离和解耦...在angularMVVM模式主要分为四部分: View:它专注于界面的显示和渲染,在angular则是包含一堆声明式Directive视图模板。...注入器是一个负责查找和创建依赖服务定位器。...对于像游戏和有图形界面的编辑器之类应用,会进行频繁且复杂DOM操作,和CRUD应用不同。因此,可能不适合用Angular来构建。在这种场景下,使用更低抽象层次库可能会更好。

    2.6K20

    iOS 面试策略之经验之谈-架构选择

    这里要注意,因为 View 持有 Presenter,所以 Presenter View 应该声明为 weak 或 unowned,以避免循环引用。...5.MVVM ViewModel 作用是什么? 关键词:#数据提供 #交互响应 ViewModel 一般来扮演两个重要角色: 视图真正数据提供者。...注意 ViewModel 绝对不能包含视图任何或结构体。MVVM 示意图如下: [image] 6. 试比较 MVC,MVP,MVVM 三种架构。...关键词:#模型层 #中间层 #视图层 MVC、MVP、MVVM 三种架构皆由模型层(M - Model),视图层(V - View),中间层(C/P/VM - Controller/Presenter/...MVVM 中间层 View Model 持有模型,在更新模型上与前两者相同。它完全独立于视图视图拥有中间层,通过绑定属性,自动进行更新。全部操作由响应式逻辑框架自动完成。

    1K30

    项目架构三问—腾讯真题

    MVP,MVVM,MVC 区别 MVC 架构介绍 Model:数据模型,比如我们从数据库或者网络获取数据View:视图,也就是我们xml布局文件Controller:控制器,也就是我们Activity...View:视图,也就是我们xml布局文件和Activity。Presenter:主持人,单独,只做调度工作。...Model:数据模型,比如我们从数据库或者网络获取数据。View:视图,也就是我们xml布局文件和Activity。...MVP层,Presenter还是会持有View引用,但是在MVVM,View和Model进行双向绑定,从而使viewModel基本只需要处理业务逻辑,无需关系界面相关元素了。...在MVVM使用了LiveData,那么在需要更新View时候,如果观察者生命周期处于非活跃状态(如返回栈 Activity),则它不会接收任何 LiveData 事件。

    53810

    WPF自学入门(十)WPF MVVM简单介绍

    一、MVVM介绍   MVVM是Model-View-ViewModel(模型-视图-视图模型缩写形式,它通常被用于WPF或Silverlight开发。...在实际业务场景我们经常会遇到客户对界面提出建议要求修改,使用MVVM模式开发,当设计界面不满足客户时,我们仅仅只需要对View作修改,不会影响到ViewModel功能代码,减少了犯错机会。...添加用户,如下图 ? 在WPF术语,这个叫“模型”,GUI是“视图”。...不可思议是“视图模型”,通过数据绑定将它们绑在一起,它真的是一个很好适配器能将模型变成某种WPF框架可以使用东西。所以这个就是“模型”。...任何实现了这个接口,当属性发生改变时候会通知所有监听者,所以我们需要修改视图模型NameViewModel: ? 这里会产生多个事件。首先,我们检查了我们是否真的改变了属性。

    2.4K20
    领券