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

有没有办法使用mvvm light表单订阅和发送泛型类的消息传递中心

MVVM Light是一个轻量级的MVVM框架,用于开发基于WPF、UWP和Xamarin的应用程序。它提供了一种方便的方式来实现视图(View)、视图模型(ViewModel)和模型(Model)之间的解耦和通信。

在MVVM Light中,消息传递中心(Messenger)是一种用于在视图模型之间进行通信的机制。它允许一个视图模型发布消息,而其他视图模型可以订阅这些消息并执行相应的操作。

对于泛型类的消息传递,MVVM Light提供了一种称为“泛型消息”的特性。通过泛型消息,可以定义一个消息类型,并将其用于传递特定类型的数据。

使用MVVM Light的泛型消息传递中心,可以按照以下步骤进行操作:

  1. 定义泛型消息类型:使用GenericMessage<T>类定义一个泛型消息类型,其中T是要传递的数据类型。
  2. 创建消息实例:使用定义的泛型消息类型,创建一个消息实例,并将要传递的数据作为参数传入。
  3. 发布消息:在发送消息的视图模型中,使用Messenger.Default.Send方法发布消息实例。
  4. 订阅消息:在接收消息的视图模型中,使用Messenger.Default.Register方法订阅消息,并指定处理消息的回调方法。

以下是一个示例代码,演示了如何在MVVM Light中使用泛型消息传递中心:

代码语言:csharp
复制
// 定义一个泛型消息类型
public class MyMessage<T>
{
    public T Data { get; private set; }

    public MyMessage(T data)
    {
        Data = data;
    }
}

// 发布消息
var message = new MyMessage<string>("Hello, MVVM Light!");
Messenger.Default.Send(message);

// 订阅消息
Messenger.Default.Register<MyMessage<string>>(this, HandleMessage);

// 处理消息的回调方法
private void HandleMessage(MyMessage<string> message)
{
    string data = message.Data;
    // 执行相应的操作
}
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发3年,九月份面试12家大厂跳槽成功,我有一些面试经验想分享给你们

是怎么实现 是怎么解析,比如在retrofit中是怎么解析 mvp与mvvm区别,mvvm怎么更新UI,databinding用得多吗,databinding原理?...原理 在项目中有直接使用tcp,socket来发送消息吗 如何在网络框架里直接避免内存泄漏,不需要在presenter中释放订阅 生命周期都是通过什么调用?有用过AIDL吗?...MVP与MVVM区别 快手二面 算法题,二叉树最大深度 如果android端IOS端调一个接口,一个通了一个没通,你会如何解决 如果android端IOS端调一个接口,一个比较慢,一个比较快,有什么思路...从事件传递,网络请求,AMS交互角度分析 AMS交互调用生命周期是顺序吗? binder进程间通信可以调用原进程方法吗? mvp与mvvm有什么区别? token放在本地如何保存?如何加密比较好?...OkHttp连接池是怎么实现?里面怎么处理SSL? 为什么要擦除?kotlin了解吗?pecs原则 同步屏障 性能优化做过什么工作? RecyclerView缓存结构是怎样

1.6K10
  • Android基于DataBinding+Koin实现MVVM模式页面快速开发框架

    本篇是 ardf第二篇,将介绍基于 DataBinding + Koin 实现 MVVM 模式页面快速开发框架使用详细实现。...运行效果如下: 同样 Fragment 使用方法类似,创建一个 TestFragment : //类型是布局通过 DataBinding 自动生成 ViewDataBinding 类型 class...• 基础支撑:封装工具、扩展事件 Model 及接口。...3.1 自动装载布局实现 在 2.2 使用介绍中可以发现,自动装载布局实现依赖了 DataBinding,将 DataBinding 通过布局文件生成 Binding 作为传递给了 BaseBindingActivity...创建对应布局 Binding ,也就是传入实例 • 通过 setContentView 将实例化 Binding 对象 root View 设置给当前 Activity • 调用子类实现

    1.5K20

    当大潮退去没有谁还能Android这行“裸泳”,10家大厂面试题,掌握这些让你轻松面试

    对于程序员来说,赚钱最简单有效办法就是提升自己技术,学习永远是最廉价最有效地提升自己地方法。...是怎么实现 7.是怎么解析,比如在retrofit中是怎么解析 8.mvp与mvvm区别,mvvm怎么更新UI,databinding用得多吗,databinding原理?...原理 10.在项目中有直接使用tcp,socket来发送消息吗 11.如何在网络框架里直接避免内存泄漏,不需要在presenter中释放订阅 12.生命周期都是通过什么调用?有用过AIDL吗?...从事件传递,网络请求,AMS交互角度分析 7.AMS交互调用生命周期是顺序吗? 8.binder进程间通信可以调用原进程方法吗? 9.mvp与mvvm有什么区别? 10.token放在本地如何保存?...5.OkHttp连接池是怎么实现?里面怎么处理SSL? 6.为什么要擦除?kotlin了解吗?pecs原则 7.同步屏障 8.性能优化做过什么工作?

    1K20

    【iOS开发】RxSwift入门:从Observable.create讲起

    case completed } 分析一下这个Event枚举:接收一个元素,有三个成员,next,error,completed。...再说一下它跟Observable关系,Observable发送所有事件都是一个Event,同一个Observable发送Event参数类型肯定是一样,就是说一个Observable不会即发送...像just empty等都是Observable子类,就是内部封装好了Element类型特定Observable。...要记得一点:Observable发送所有事件都是一个Event对象,即我们订阅一个Observable收到任何事件都是一个Event 想看RACCommand写法同学可以去看一下我另一篇文章:...MVVM使用RACCommand封装网络请求 如果文章对您有帮助,就关注一下点个赞吧,我会持续写一些实际开发中遇到问题,代码写法相关文章。

    76740

    .NET Core 3 WPF MVVM框架 Prism系列之事件聚合器

    本文将介绍如何在.NET Core3环境下使用MVVM框架Prism使用事件聚合器实现模块间通信 一.事件聚合器  在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 我们留下了一些问题...,就是如何处理同模块不同窗体之间通信不同模块之间不同窗体通信,Prism提供了一种事件机制,可以在应用程序中低耦合模块之间进行通信,该机制基于事件聚合器服务,允许发布者订阅者之间通过事件进行通讯...四.几种订阅方式设置  我们在Demo已经通过消息聚合器事件机制,实现订阅发布者之间通讯,我们再来看看,Prim都有哪些订阅方式,我们可以通过PubSubEvent上面的Subscribe函数其中最多参数重载方法来说明...: PublisherThread:默认设置,使用此设置能接受发布者传递消息 UIThread:可以在UI线程上接受事件 BackgroundThread:可以在线程池在异步接受事件 3.keepSubscriberReferenceAlive...设置为false,事件维护对订阅者实例弱引用,当窗体关闭时,会自动取消订阅事件,也就是不用手动取消订阅事件 4.filter参数  filter是一个Predicate委托参数,返回值为布尔值,

    1.4K30

    win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199

    INavigatablePage 原因是,我这个还有在 WPF 使用,大家都知道 WPF Frame 跳转 UWP 相同,所以需要传入不同 这里大家还看到我使用了(NavigateFrame...OnNavigatedTo 就可以拿到这个 ViewModel ,需要强转,我之前想使用方法让页面指定 ViewModel ,但是存在一个文件是 xaml 对支持不好,所以不在 UWP 使用这个方法...win10 uwp 如何让 Page 继承 现在就可以使用 WastounowMearhallworcelModel ,在 WastounowMearhallworcelModel 里面也可以获得主界面传过来参数...在进入一个 ViewModel 时候,需要让他发送消息给其他 ViewModel ,在继承 ViewModelMessage 就可以使用 Send 函数,发送消息可以是消息也可以是告诉指定ViewModel...如果找到 消息指定 ViewModel 再寻找消息对应处理,把消息交给处理。如果发送消息是自带处理,就调用消息本身处理。

    1.3K20

    MVVM、RxJava、Retrofit三剑合璧,事半功倍

    当然光讲MVVM显得有些空洞,因此本文还会附带上了解经常和它搭配使用RxJavaRetrofit。...本文仅讨论在Android平台应用开发中使用,其它平台也相似但可能存在些许差别。 简介 在搭建MVVM项目之前我们先来简单了解下MVVM模式,以及MVP区别。...ViewModel是MVVM里最复杂一层。首先是名,有一个,构造函数传入实例,这个不是必须,是我自己在父定义。...这些成员变量都是ObservableField类型或者ObservableInt类型,包着才是layout需要数据, 为什么要用Observable包一下呢,因为需要自动更新ui。...代码有点多,如果仅仅是写一个普通Adapter,其实并不需要这么复杂,我是想让它通用一点所以加了

    2.5K40

    浅析Spring中事件驱动机制

    另一模式,发布订阅模式往往被人们等同于观察者模式,但我理解是两者唯一区别,是发布订阅模式需要有一个调度中心,而观察者模式不需要,例如观察者列表可以直接由被观察者维护。...MQ,中间件级别的消息队列(e.g. ActiveMQ,RabbitMQ),可以认为是发布订阅模式一个具体体现。事件驱动->发布订阅->MQ,从抽象到具体。...Event,为了简单起见,注册事件只传递了name(可以复杂对象,但注意要了解清楚序列化机制)。...Spring提供事件订阅者必须实现接口,我们一般把该Service关心事件类型作为传入。...当我们以后再看到Event,Publisher,EventListener一单词后缀时,也能立刻事件机制联系上了。

    2K90

    浅析 Spring 中事件驱动机制

    今天来简单地聊聊事件驱动,其实写这篇文章挺令我挺苦恼,因为事件驱动这个名词,我没有找到很好定性解释,担心自己表述有误,而说到事件驱动可能立刻联想到如此众多概念:观察者模式,发布订阅模式,消息队列...另一模式,发布订阅模式往往被人们等同于观察者模式,但我理解是两者唯一区别,是发布订阅模式需要有一个调度中心,而观察者模式不需要,例如观察者列表可以直接由被观察者维护。...MQ,中间件级别的消息队列(e.g. ActiveMQ,RabbitMQ),可以认为是发布订阅模式一个具体体现。事件驱动->发布订阅->MQ,从抽象到具体。...Event,为了简单起见,注册事件只传递了name(可以复杂对象,但注意要了解清楚序列化机制)。...Spring提供事件订阅者必须实现接口,我们一般把该Service关心事件类型作为传入。

    1.2K10

    WPF 轻量级 MVVM 框架入门 2.1.2 安装项目要求创建主页面找到 ViewModel通过附加属性找到 ViewModel跳转页面跳转命令自定义命令

    具体思想是使用消息发送方法,多个 ViewModel 之间使用发送消息解除依赖。把原来很多需要写在 ViewModel 代码通过发送指定消息,在其他处理,减少 ViewModel 代码。...如果现在使用是 Xarmain ,那么安装 lindexi.MVVM.Framework 就可以,这个库使用 dotnet framework 4.5 dotnet standard 2.0 ,所以在很多项目都可以使用...ViewModelPage 合并,创建时候提供两个方法,一个是输入 Type 方法,另一个是。...B 页面只需要发送一个 NavigateMessage ,具体怎么跳转是不需要写 自定义命令 现在可以尝试使用框架用法,自己定义消息处理 在 B 页面发送文字到 MainWindow 显示,不让...因为 SawbelChaceredisComposite 消息是耦合,只有处理知道消息,所以这里可以转换 ViewModel 因为这时知道是哪个收到 这里处理还可以继承Composite 这里就是消息类型

    1.2K20

    关于 MVVMMVC这些,你知道吗?

    前后端有没有关系,它MVC区别是啥,有啥优势。...为了解决硬编码带来耦合性过强问题,在在实际实现中,需要使用到设计模式中发布 - 订阅模式。 发布 - 订阅模式(又称观察者模式)是一种常用设计模式,该模式包含发布者订阅者两种角色。...可以让多个订阅订阅同一个发布者发布主题,当发布者主题发生变化时,对外发送一个通知,所有订阅了该主题订阅者都会接收到更新消息。因此,观察者模式定义是一种一对多关系。...在系统运行过程中,一旦系统中数据模型发生了变化,观察者 Observer setter 访问器属性就会被触发,此时消息订阅中心 Dep 会遍历它所维护所有订阅者,对于每一个订阅了该数据对象,向它发出一个更新通知...使用MVC构建整体Web架构,使用MVVM解决View层DOMdata耦合问题。

    78800

    关于 MVVMMVC一些总结

    我需要解决问题: MVVM到底是个什么东东,前后端有没有关系,它MVC区别是啥,有啥优势。 我是这样做: 百度寻找,找了一些关于MVVM论文,博客,梳理出自己答案。...为了解决硬编码带来耦合性过强问题,在在实际实现中,需要使用到设计模式中发布 - 订阅模式。 发布 - 订阅模式(又称观察者模式)是一种常用设计模式,该模式包含发布者订阅者两种角色。...可以让多个订阅订阅同一个发布者发布主题,当发布者主题发生变化时,对外发送一个通知,所有订阅了该主题订阅者都会接收到更新消息。因此,观察者模式定义是一种一对多关系。...在系统运行过程中,一旦系统中数据模型发生了变化,观察者 Observer setter 访问器属性就会被触发,此时消息订阅中心 Dep 会遍历它所维护所有订阅者,对于每一个订阅了该数据对象,向它发出一个更新通知...使用MVC构建整体Web架构,使用MVVM解决View层DOMdata耦合问题。 ?

    2.7K30

    174道JavaScript 面试知识点总结(下)

    XSS 本质是因为网站没有对恶意代码进行过滤,与正常代码混合在一起了,浏览器没有办法分辨哪些脚本是可信,从而导致了恶意代码执行。 XSS 一般分为存储、反射 DOM 。...流程不够清晰 发布/订阅(观察者模式) 类似于事件监听,但是可以通过‘消息中心’,了解现在有多少发布者,多少订阅者 Promise 对象 优点:可以利用 then 方法,进行链式写法;可以书写错误时回调函数...调度中心一方面从发布者接收事件,另一方面向订阅者发布事件,订阅者需要在调度中心订阅事件。通过调度中心实现了发布者订阅者关系解耦。使用发布订阅者模式更利于我们代码可维护性。...(2)兄弟组件间通信 第一种是使用 eventBus 方法,它本质是通过创建一个空 Vue 实例来作为消息传递对象,通信组件引入这个实 例,通信组件通过在这个实例上监听触发事件,来实现消息传递...(3)任意组件之间 使用 eventBus ,其实就是创建一个事件中心,相当于中转站,可以用它来传递事件接收事件。

    90520

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

    MVVM 简介 MVVM源于微软软件开发架构模式。MVVM开发基于事件驱动,实现UI层逻辑层分离,从而使UI设计人员程序员各施其职。...02 以下是一个关于Caliburn.Micro简短列表: Action消息: 操作机制允许您将UI触发器(如按钮“单击”事件)“绑定”到视图模型或演示器上方法。该机制还允许向方法传递参数。...聚合器遵循总线样式发布/子模型。您向聚合器注册了一个消息处理程序,它会向您发送您感兴趣任何消息。您可以通过实现IHandle来声明您对特定消息类型兴趣。...此外,IResult实现可以访问执行上下文,该上下文告诉它们执行是什么ActionMessage、哪个FrameworkElement触发了要发送消息、ActionMessage由哪个实例处理(在上调用...我们希望编写优雅、可测试、可维护可扩展表示层代码……我们希望这样做很容易。这就是为什么。如果您更喜欢使用监控控制器被动查看而不是MVVM,请继续。

    1.8K20

    【RxJava】RxJava 基本用法 ( 引入 RxJava 依赖 | 定义 Observer 观察者 | 定义 Observable 被观察者 | 被观察者订阅观察者 )

    一、RxJava 基本用法 本章节涉及到 RxJava 组成要素 : Observable(被观察者): Observable 是一个 可以发送消息数据源 , 可以同时发送若干消息 , 消息格式可以通过进行定义...Observable 通过 订阅观察者 来实现 消息传递。 Observer(观察者): Observer 表示一个接收 Observable 发送消息 观察者。...也可以定义在消息发送位置 , 这里 推荐定义在消息发送位置 ; 调用时 , 将 Observer 观察者 传递给对应异步操作函数 ; 在异步操作函数中 , 创建 Observable 被观察者...Observable 是一个 可以发送消息数据源 , 可以同时发送若干消息 , 消息格式可以通过进行定义 ; 消息发送完毕后 会 通知观察者。...Observable 通过 订阅观察者 来实现 消息传递

    50920

    2020安卓面试心得②:疫情下安逸,九场面试后险获三个offer,这份面试总结值得反思

    7、ArrayMapSparseArray区别,实现。 8、:为何会有协变逆变,PECS规则。 9、kotlin:outin. 10、Handler。...onMeasureonLayout呢? ③Choreography作用。它上游下游各自是哪个。Choreography发布了订阅消息,同类型Callback还有哪些?...4、字符串 “+” append操作区别。避免创建多个String对象。 5、擦除。kotlin真实现;中T区别,ListList有什么区别;superextends区别;为何会有擦除;擦除时机;编译器类型检查。...18、mvpmvvm(面试官说要从订阅、观察者角度讲) 19、项目架构 20、kotlinlateinitby lazy区别 21、flutter三棵树;flutter为何性能比rn好 二面

    76600
    领券