• <menu id="w2i4a"></menu>
  • logo DevExpress WinForm中文手冊

    文檔首頁>>DevExpress WinForm中文手冊>>Layer Communication.Messenger

    Layer Communication.Messenger


    立即下載DevExpress WinForms

    下面的文本在DevExpress的MVVM Best Practices Demo中有一個相關(guān)的例子。

    Group:API代碼示例

    Module:Messenger

    Example:Messenger

    23.1 Demo Center啟動演示

    實(shí)際應(yīng)用程序幾乎總是有多個視圖和視圖模型,而且除了極少數(shù)例外,您將需要一種方法使這些獨(dú)立的層相互通信并共享數(shù)據(jù)。要解決這個問題:請使用DevExpress MVVM Messenger。

    這個消息機(jī)制的思想非常簡單:在Sender ViewModel中,調(diào)用Send方法并用消息的形式傳輸所需的數(shù)據(jù),在接收者ViewModel中,調(diào)用Register方法來捕獲所有消息。

    C#:

    //sender
    public void SendCustomMessage() {
    Messenger.Default.Send("A message");
    }
    
    //receiver
    public void RegisterAsStringMessageRecepient() {
    Messenger.Default.Register<string>(this, OnStringMessage);
    }
    void OnStringMessage(string message){
    //custom action
    }

    VB.NET:

    'sender
    Public Sub SendCustomMessage()
    Messenger.Default.Send("A message")
    End Sub
    
    'receiver
    Public Sub RegisterAsStringMessageRecepient()
    Messenger.Default.Register(Of String)(Me, AddressOf OnStringMessage)
    End Sub
    Private Sub OnStringMessage(ByVal message As String)
    'custom action
    End Sub

    Register方法在ViewModels之間建立永久連接,這意味著一旦調(diào)用Register方法就不需要再次調(diào)用,所有發(fā)送的后續(xù)消息都將被自動接收,要中斷此連接,請使用Unregister方法。

    C#:

    Messenger.Default.Unregister<string>(this, OnStringMessage);

    VB.NET:

    Messenger.Default.Unregister(Of String)(Me, OnStringMessage)

    如果有多個發(fā)送方傳輸相同類型的消息,則可以使用tokens標(biāo)記從不同發(fā)送方發(fā)送消息,tokens可以是任何類型的對象,下面的代碼使用簡單的字符串令牌。

    C#

    public void TransmitMessage1() {
    Messenger.Default.Send<string>("This message is sent from Sender 1", "sender1");
    }
    
    public void TransmitMessage2() {
    Messenger.Default.Send<string>("This message is sent from Sender 2", "sender2");
    }

    VB.NET:

    Public Sub TransmitMessage1()
    Messenger.Default.Send(Of String)("This message is sent from Sender 1", "sender1")
    End Sub
    
    Public Sub TransmitMessage2()
    Messenger.Default.Send(Of String)("This message is sent from Sender 2", "sender2")
    End Sub

    Register和Unregister方法具有相應(yīng)的重載,允許您接收或阻止用特定令牌標(biāo)記的消息。

    C#:

    Messenger.Default.Register<string>(this, "sender1", OnStringMessage);
    Messenger.Default.Unregister<string>(this, "sender2", OnStringMessage);

    VB.NET:

    Messenger.Default.Register(Of String)(Me, "sender1", OnStringMessage)
    Messenger.Default.Unregister(Of String)(Me, "sender2", OnStringMessage)
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();