当前位置: 首页 > news >正文

游民星空是用什么做的网站网站模板及源码

游民星空是用什么做的网站,网站模板及源码,做网站如何选域名,招标网哪个好并且免费文章目录 环境WeakReferenceMessenger方法介绍无回调订阅发送Token区分有回调订阅发送 环境 CommunityToolkit.Mvvm Messenger 十月的寒流: 如何使用 CommunityToolkit.Mvvm 中的 Messenger 来进行 ViewModel 之间的通信 WeakReferenceMessenger 我这里只讲简单的弱Messenger…

文章目录

  • 环境
  • WeakReferenceMessenger
    • 方法介绍
    • 无回调订阅发送
    • Token区分
    • 有回调订阅发送

环境

在这里插入图片描述

CommunityToolkit.Mvvm Messenger
十月的寒流: 如何使用 CommunityToolkit.Mvvm 中的 Messenger 来进行 ViewModel 之间的通信

WeakReferenceMessenger

我这里只讲简单的弱Messenger,这个是Toolkit帮我们封装好的,里面好像有什么垃圾回收什么的,里面怎么运行的我也没去研究。我这里就简单讲解一下怎么用

方法介绍

  • WeakReferenceMessenger.Default.Register
    • 订阅消息
  • WeakReferenceMessenger.Default.Send
    • 接收消息

为了保证一对一,我们注册和发送的时候需要用到record结构体==(我后面试了一下,当然也可以不用,单纯一个类也行)==。因为这个是根据type的name来进行订阅和发送的。
C# 9.0:Records 结构体介绍

无回调订阅发送

//声明record
//类型可以自定义,是通过record的类名自动订阅和发送的
public record LogMessage(string msg);///在viewModel里面订阅public partial class ListViewModel {public ListViewModel(){//在构造函数里面订阅。注意订阅一定是你接受的消息类型//第一个是订阅者,默认是本身,就是thisWeakReferenceMessenger.Default.Register<LogMessage>(this, Recive);}//recipient 就是把订阅者,也就是ViewModel传给你,一般用不上//第二个参数是你的Recive的值public void Recive(object recipient, LogMessage msg){Debug.WriteLine("ListViewModel:" + msg.msg);}}

发送

//发送和接受的类型一定是一致的
WeakReferenceMessenger.Default.Send<LogMessage>(new LogMessage("lala"));

Token区分

WeakReferenceMessenger.Default.Register<TMessage,Ttoken>
在里面可以传入两个泛型

//订阅
WeakReferenceMessenger.Default.Register<LogMessage,string>(this,"token", Recive);//发送
//注意,这里的token必须完全一致
WeakReferenceMessenger.Default.Send<LogMessage,string>(new LogMessage("发送信息"),"token");

这里Token建议使用enum枚举类型,方便静态编译和纠错

有回调订阅发送

如果要添加回调功能,需要ViewModel继承IRecipient<RequestMessage<TMessage>>接口,TMessage和上面一样,都是订阅对象

    public partial class LogViewModel : ObservableObject,IRecipient<RequestMessage<LogMessage>>{[ObservableProperty]private string title = "控制台界面";public LogViewModel(){//接口必须实现WeakReferenceMessenger.Default.Register(this);}//消息返回public void Receive(RequestMessage<LogMessage> message){Debug.WriteLine("我接受到了消息"+ message.Response.msg);message.Reply(new LogMessage("我返回的消息"));}}

但是感觉并不是很好用,因为这样就没有Token了,而且回调的类型和传入的类型是一致的,这个太死板了,可以通过record里面定义一个Action去回调,这里不展开说明

    public record LogMessage(string msg,Action<string> callback);
http://www.hkea.cn/news/174508/

相关文章:

  • 境外网站做网站涉黄互联网媒体广告公司
  • 河南做网站公司汉狮怎么做蛋糕
  • 哈 做网站网店代运营收费
  • 制作网页的三大技术是什么郑州seo顾问
  • 网站建设报价流程行业网站网址
  • 提供邯郸做wap网站网页推广方案
  • 网站从域名广告营销公司
  • 网站链接的常见形式免费广告网
  • 微信微网站开发教程百度大数据平台
  • 网站服务设计引流推广是什么意思
  • 学校网站建设管理办法本周新闻热点事件
  • 网站移动版怎么做网站创建公司
  • wordpress 微商城模板下载地址苏州seo推广
  • 珠海网站哪家好百度com百度一下你
  • wordpress wp.net网络优化工程师是做什么的
  • 刷会员网站怎么做外贸如何推广
  • 专做女装的网站网站备案是什么意思
  • 没有网站可以做seo排名吗小学生简短小新闻摘抄
  • 做程序网站需要什么代码宁波seo搜索排名优化
  • 网站建设开发语言新冠病毒最新消息
  • 怎么做1688网站网页制作工具有哪些
  • 一个网站的主题和设计风格最好用的免费建站平台
  • 网站开发主页手机优化游戏性能的软件
  • 怎么做属于自己的域名网站网络策划方案
  • destoon做的网站百度商务合作联系
  • 金山区网站制作网络营销策划书1500字
  • 厦门网站建设制作工具熊猫关键词挖掘工具
  • 徐州网站建设 网站推广百度首页快速排名系统
  • 在线转格式网站怎么做拼多多seo 优化软件
  • 成都理工疫情最新消息贵港seo