记忆碎片---MVVMLight之Messenger

Messenger是MVVMLight Toolkit提供的一个类。用来通信。

            Messenger.Default.Register<Customer>(this, "ChildWindow", AddCustomer);

 要使用Messenger来传递消息,首先要注册一个消息。有一个标识Token用来区别标记不同的消息,如上段代码中“ChildWindow”。this表示接收器。<Customer>是消息的类型(一会儿我们传给AddCustomer的参数类型)。

我们的消息可以是任何类型,当然也可以是集合类型也可以是简单的boolean型

Messenger.Default.Register
//
        // 摘要:注册一个消息接收器,当消息发送,接收到后就执行Action
        // 参数:
        //   recipient:
        //     消息接收器.
        //
        //   token:
        //     就像一个频道,        
        //     recipient注册的token和sender发送的Token一样时,消息被接受
        //   action:
        //     消息发送后会执行的操作.
        //
        // 类型参数:
        //   TMessage:
        //     发送的消息、会被执行的操作参数的类型.
        public virtual void Register<TMessage>(object recipient, object token, Action<TMessage> action);


 


我们通过View中的一个OKButton来绑定一个Command OKButtonCommand 来发送这个消息。意思是妈妈叫你来AddCustomer了。

        public RelayCommand<Customer> OKButtonCommand { get; private set; }
        private void OKButtonClick(Customer param)
        {
            /*
             * 发送一个 Customer 信息
             * Token 为 ChildWindow 只有具有相同 Token 接收者都会接收到该信息
             */
            // 注册一个接收者 Token 为 ChildWindow
            Messenger.Default.Send<Customer>(param, "ChildWindow");
        }

我们还要定义一个AddCustomer方法来让this接收到消息以后去执行。

AddCustomer

不要忘了在CleanUp里把消息注销掉。不然会有可能下次妈妈叫AddCustomer的时候多加。注销请用

            Messenger.Default.Unregister<Customer>(this, "ChildWindow", AddCustomer);

 

 

转载于:https://www.cnblogs.com/pzoasis/archive/2012/05/10/2494396.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值