2010-07-11 47 views

回答

6

我看到兩個選項:

首先,你可以用一個「標記」的界面和使用標記ViewModelB,與其實際的類名。

Messenger.Default.Send<string, IMessageTarget>("Something Happened"); 

這不是我最喜歡的解決方案,但它應該工作。

或者,你可以在ViewModelB特定的標記,同時發送從ViewModelA消歧的消息的消息登記:

在ViewModelA:

Messenger.Default.Send<string>("Something Happened", "MessageDisambiguator"); 

在ViewModelB:

Messenger.Default.Register<string>(
    this, 
    "MessageDisambiguator", 
    (action) => DoWork(action) 
); 

很多更清潔,並且仍然允許您爲測試目的模擬ViewModelB。

可能有更多的選擇,但這些都是流行到我的頭在這麼晚的時候頂部的...

+0

是的,謝謝克里斯,我用了第二個選項,這似乎很對我好。也許不是字符串,對於令牌,我會創建一個MessengerSimpleTokens枚舉。 – 2010-07-13 13:30:59