完善主體資料,免費(fèi)贈(zèng)送VIP會(huì)員!
    * 主體類型
    * 企業(yè)名稱
    * 信用代碼
    * 所在行業(yè)
    * 企業(yè)規(guī)模
    * 所在職位
    * 姓名
    * 所在行業(yè)
    * 學(xué)歷
    * 工作性質(zhì)
    請(qǐng)先選擇行業(yè)
    您還可以選擇以下福利:
    行業(yè)福利,領(lǐng)完即止!

    下載app免費(fèi)領(lǐng)取會(huì)員

    NULL

    ad.jpg

    二次開發(fā)教程:MVVMLight的Messenger

    發(fā)布于:2019-07-25 15:19:23

    網(wǎng)友投稿

    更多

    MvvmLight里的Messenger的注冊(cè)方法有一個(gè)是這樣的:


            //

            // 摘要:

            //     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.

            //

            // 參數(shù):

            //   recipient:

            //     The recipient that will receive the messages.

            //

            //   action:

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

            //

            // 類型參數(shù):

            //   TMessage:

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

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


    這個(gè)TMessage是要傳送消息的類型,它就是action的參數(shù),但是這個(gè)recipient有點(diǎn)費(fèi)解。



    這就要說到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 也是可以使用反射來調(diào)用的,查看Messenger的源碼,發(fā)現(xiàn)它也是使用這個(gè)方法來調(diào)用Action,


    所以這個(gè)recipient應(yīng)該是委托的方法所在的對(duì)象,就是使用放射調(diào)用方法的object參數(shù)


    下面舉個(gè)修改Mvvmlight的WelcomeTitle的例子,




    我們可以在MainViewModel的構(gòu)造函數(shù)里注冊(cè)修改文字的委托


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

                    this.WelcomeTitle = p;

                });


    在界面上加一個(gè)Button,并在Click事件里SendMessage


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




    注意token要一樣

    本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

    未標(biāo)題-1.jpg

    上一篇:二次開發(fā)教程:Revit開發(fā)區(qū)分基本墻,幕墻,疊層墻

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

    主站蜘蛛池模板: 亚洲国产精品一区| 国产一区二区三区在线看片| 亚洲Av无码一区二区二三区 | 日本一区午夜爱爱| 久久精品中文字幕一区| 亚洲一区中文字幕久久| 国产一区二区三区在线免费| 亚洲一区二区观看播放| 天堂一区人妻无码| 一区二区三区观看免费中文视频在线播放 | 麻豆AV天堂一区二区香蕉| 成人乱码一区二区三区av| av一区二区三区人妻少妇| 97久久精品一区二区三区| 国产精品毛片a∨一区二区三区 | 日韩精品一区二区三区国语自制| 久久精品一区二区国产| 国产福利电影一区二区三区久久久久成人精品综合 | 国产香蕉一区二区在线网站| 国产日韩高清一区二区三区| 国产精品亚洲一区二区在线观看| 久久久久久综合一区中文字幕| 成人国产精品一区二区网站| 日韩经典精品无码一区| 高清在线一区二区| 无码精品久久一区二区三区 | 在线播放国产一区二区三区 | 中文字幕精品一区影音先锋| 亚洲一区二区三区国产精品无码| 另类免费视频一区二区在线观看| 国模少妇一区二区三区| 亚洲日本一区二区| 大香伊人久久精品一区二区| 99精品国产高清一区二区麻豆| 亚洲综合色一区二区三区| 国产福利一区二区| 一区二区三区高清视频在线观看| 肥臀熟女一区二区三区 | 精品一区二区三区在线视频观看| 全国精品一区二区在线观看| 中文字幕在线视频一区|