完善主體資料,免費贈送VIP會員!
      * 主體類型
      * 企業名稱
      * 信用代碼
      * 所在行業
      * 企業規模
      * 所在職位
      * 姓名
      * 所在行業
      * 學歷
      * 工作性質
      請先選擇行業
      您還可以選擇以下福利:
      行業福利,領完即止!

      下載app免費領取會員

      NULL

      ad.jpg

      二次開發教程:MVVMLight的Messenger

      發布于:2019-07-25 15:19:23

      網友投稿

      更多

      MvvmLight里的Messenger的注冊方法有一個是這樣的:


              //

              // 摘要:

              //     Registers a recipient for a type of message TMessage. The action parameter will

              //     be executed when a corresponding message is sent.

              //     Registering a recipient does not create a hard reference to it, so if this recipient

              //     is deleted, no memory leak is caused.

              //

              // 參數:

              //   recipient:

              //     The recipient that will receive the messages.

              //

              //   action:

              //     The action that will be executed when a message of type TMessage is sent.

              //

              // 類型參數:

              //   TMessage:

              //     The type of message that the recipient registers for.

              void Register<TMessage>(object recipient, Action<TMessage> action);


      這個TMessage是要傳送消息的類型,它就是action的參數,但是這個recipient有點費解。



      這就要說到Action的使用問題


          class Program

          {

              static void Main(string[] args)

              {

                  Test test = new Test();

                  Action<string> action = new Action<string>(test.Excute);

                  action("ssdfsdf asdfsad");

                  MethodInfo minfo = action.Method;

                  minfo.Invoke(test, new object[] { "sdfsdf sdf"});

                  Console.ReadLine();

              }

          }


          public class Test

          {

              public void Excute(string str)

              {

                  Console.WriteLine(str);

              }

          }


      重上面的小例子我可看出Action 也是可以使用反射來調用的,查看Messenger的源碼,發現它也是使用這個方法來調用Action,


      所以這個recipient應該是委托的方法所在的對象,就是使用放射調用方法的object參數


      下面舉個修改Mvvmlight的WelcomeTitle的例子,




      我們可以在MainViewModel的構造函數里注冊修改文字的委托


                  Messenger.Default.Register<string>(this,"改文字", p => {

                      this.WelcomeTitle = p;

                  });


      在界面上加一個Button,并在Click事件里SendMessage


                  Messenger.Default.Send<string>("勝多負少", "改文字");




      注意token要一樣

      本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

      未標題-1.jpg

      上一篇:二次開發教程:Revit開發區分基本墻,幕墻,疊層墻

      下一篇:二次開發教程:C# 通過MVVMLight探索IOC

      主站蜘蛛池模板: 亚洲人成网站18禁止一区| av无码精品一区二区三区四区| 国产在线一区二区在线视频| 黑人大战亚洲人精品一区| 亚洲av色香蕉一区二区三区蜜桃| 国产成人精品一区二三区熟女| 中文字幕一区在线观看| 亚洲丶国产丶欧美一区二区三区| 一区二区在线视频| 久久久99精品一区二区| 国产一区二区三区在线| 无码中文人妻在线一区 | 国产精品无码一区二区在线观一 | av无码精品一区二区三区四区| 在线播放偷拍一区精品| 亚洲AV午夜福利精品一区二区| 免费精品一区二区三区第35| 亚洲一区日韩高清中文字幕亚洲| 国产av夜夜欢一区二区三区| 久久中文字幕无码一区二区 | 日韩AV无码一区二区三区不卡毛片 | 亚洲日韩一区二区一无码| 精品无码一区二区三区爱欲九九 | 亚洲AV永久无码精品一区二区国产 | 亚洲日本一区二区三区在线| 亚洲国产精品成人一区| 久久国产香蕉一区精品| 一区二区三区四区电影视频在线观看| 国产精品揄拍一区二区久久| 国产福利视频一区二区| 日本一区二区不卡视频| 亚洲福利一区二区精品秒拍| 国产精品丝袜一区二区三区| 久久精品一区二区免费看| 91福利国产在线观一区二区| 欧亚精品一区三区免费| 国产综合精品一区二区| 久久久久人妻精品一区三寸蜜桃 | 日本不卡一区二区视频a| 久久久久99人妻一区二区三区| 精品国产AV无码一区二区三区|