首页 > 其他分享 >Prism之EventAggregator——实现ViewModel之间传递数据的工作

Prism之EventAggregator——实现ViewModel之间传递数据的工作

时间:2024-06-07 17:55:48浏览次数:23  
标签:IEventAggregator set EventAggregator ViewModel ea private 传递数据 message public

public class MessageViewModel : BindableBase
{
    IEventAggregator _ea;

    private string _message = "Message to Send";
    public string Message
    {
        get { return _message; }
        set { SetProperty(ref _message, value); }
    }

    public DelegateCommand SendMessageCommand { get; private set; }

    public MessageViewModel(IEventAggregator ea)
    {
        _ea = ea;
        SendMessageCommand = new DelegateCommand(SendMessage);
    }
    private void SendMessage()
    {
        _ea.GetEvent<MessageSentEvent>().Publish(Message);
    }
}
public class MessageListViewModel : BindableBase
{
    IEventAggregator _ea;

    private ObservableCollection<string> _messages;
    public ObservableCollection<string> Messages
    {
        get { return _messages; }
        set { SetProperty(ref _messages, value); }
    }

    public MessageListViewModel(IEventAggregator ea)
    {
        _ea = ea;
        Messages = new ObservableCollection<string>();

        _ea.GetEvent<MessageSentEvent>().Subscribe(MessageReceived);
    }

    private void MessageReceived(string message)
    {
        Messages.Add(message);
    }
}

标签:IEventAggregator,set,EventAggregator,ViewModel,ea,private,传递数据,message,public
From: https://www.cnblogs.com/f-t-q/p/18237632

相关文章

  • WPF MVVM如何在ViewModel直接操作控件对象
    早些年在WPF中使用COM组件时,需要在ViewModel中操作COM组件中的控件对象,但是这个控件对象又不支持绑定,后面的解决办法是在窗口加载时,将控件对象以参数传递到Loaded事件的处理命令中,然后将这个对象记录下来,后面就可以直接操作这个控件了。今天同事在使用WebView2的时候,又遇到这个......
  • 【Rust】——使用消息在线程之间传递数据
    ......
  • 【vue3入门】-【21】 组件传递数据
    组件传递数据_Props静态数据传递组件与组件之间不是完全独立的,而是有交集的,那就是组件与组件之间是可以传递数据的传递数据的解决方案就是propsapp.vue<template><!--主要要生效Header中的样式,需要删除main.json中默认的main.css样式--><!--不需要再次引入,可以直接使......
  • WPF pass event method to viewmodel via Interaction:CallMethodAction,TargetObject
    <Windowx:Class="WpfApp71.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • 借助Messenger实现ViewModel间通信(communitytoolkit-mvvm)
    两个VM:MainViewModel,TestViewModel需求:TestViewModel中发消息到MainViewModel处理写法1:  1.MainViewModel中注册消息处理函数WeakReferenceMessenger.Default.Register<string,string>(this,"AddItem",DoMessage)  2.参数2用于校验,参数3为消息处理函数  3.TestViewM......
  • WPF新建viewModel实例化成员的注意事项
    不要用表达式体去初始化一个用做数据源(比如ItemSource)的引用类型成员。比如这种publicList<MainWindowItem>Items=>newList<MainWindowItem>(){newMainWindowItem{title="项目管理",icon="\ue613",type=typeof(项目管理Control),group="内部管理"},new......
  • Android官方架构组件ViewModel_从前世今生到追本溯源,android插件化开发指南
    ViewModel在对应的作用域内保持生命周期内的局部单例,这就引发一个更好用的特性,那就是Fragment、Activity等UI组件间的通信。3.3更方便UI组件之间的通信一个Activity中的多个Fragment相互通讯是很常见的,如果ViewModel的实例化作用域为Activity的生命周期,则两个Fragment......
  • 8.Prism聚合器的使用IEventAggregator
    IEventAggregator是一个事件聚合器,用于在不同模块之间进行通信。它允许模块之间进行解耦,通过发布和订阅事件来实现通信。在使用WPFprismIEventAggregator时,你可以创建自定义事件,订阅事件并在需要时发布事件。这样可以实现模块之间的松耦合,提高代码的可维护性和可扩展性。 ......
  • WebAssembly入门笔记[2]:利用Memory传递数据
    利用灵活的“导入”和“导出”机制,WebAssembly与承载的JavaScript应用之间可以很便利地“互通有无”。《与JavaScript的交互》着重演示了如何利用函数的导入和导出实现功能的共享,接下来我们主要关注数据的传递或者共享。宗地来说,WebAssembly与宿主程序之间的数据传递主要有如下三......
  • wpf_绑定两个ViewModel
    Juster.Music\MainWindow.xaml.csnamespaceJuster.Music{///<summary>///InteractionlogicforMainWindow.xaml///</summary>publicpartialclassMainWindow:Window{publicMainWindow(){......