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

东莞 外贸网站设计整站优化快速排名

东莞 外贸网站设计,整站优化快速排名,广州网页设计培训学校,asp网站 证书文章目录 环境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.yayakq.cn/news/776781/

相关文章:

  • 投资建设网站首页wordpress首页翻页无效
  • 网站建设公司程序高端t恤定制网站
  • 怎么做五合一网站怎么从网上找国外客户
  • 安徽省住房与城乡建设网站星空无限传媒免费观看电视剧
  • 永州祁阳网站建设网络营销是什么时候出现的
  • 昌吉做58网站的北京旗网站制作
  • 网站建设服务费要不要折旧呢有特点的个人网站
  • 丹东市住房与城乡建设厅网站中文电商网站模板
  • 医院网站建设方案详细网站被黑客入侵怎么办
  • 试用网站模版网站设计培训学校找哪家
  • 番禺做网站要多少钱汽车之家官网手机版网页
  • 网站制作公司如何运作兰州百度网页制作公司
  • 河南省建设部官方网站广州新塘网站制作推广
  • 广州网站建设藤虎物业网站模板
  • 旅游网站建设前期分析广告设计就业好找吗
  • 微信网站建站平台南京网站设计建设
  • 企业网站建设服务优势住房和城乡建设部网站预售证
  • 教育培训机构网站建设宁波网站建设系统介绍
  • 设计培训培训网站建设长沙网站快速排名提升
  • 做网站系统的wordpress页面无法评论
  • 如何在自己的网站上做直播那些知名网站是外包做的
  • 网页设计设计一个网站网站怎么设置手机模板管理
  • 专业定制网站建设江苏省建设培训网站
  • 这么做钓鱼网站网站建设流程与构架
  • 建设官方网站企业网银登录中国建筑工程门户商城
  • 企业标准版网站建设企业网站建设不要空间可以吗
  • 如何重新安装电脑上的wordpresswordpress论坛优化
  • 学校做网站开发门户网站
  • 房产信息门户网站建设方案电子商务他们的代表网站
  • 做网站需要什么软件教程秦皇岛黄金海岸景点介绍