2013-04-16 38 views
4

我很新的MVVM光的,使用Messenger的一些問題IM ..MVVM光從視圖模型發送消息,查看

我試着從視圖模型將消息發送到視圖,但是這是不工作對我來說,我已經嘗試過的職位和示例代碼去,但我認爲這是很簡單的東西,我很想念..我感謝您的幫助..

在我的ViewModel我發送消息

Messenger.Default.Send(new ClearNewProjectSettingsMessage()); 

這是我的消息類,我真的不知道該把什麼放在這裏使用一切都在我的View類

public class ClearNewProjectSettingsMessage 
{ 
    public ClearNewProjectSettingsMessage() 
    { 

    } 
} 

我註冊的視圖構造消息:

Messenger.Default.Register<ClearNewProjectSettingsMessage>(
      this, 
      () => ClearSettings() 
); 

這不幸的是沒有編制,所以我嘗試這樣做:

Messenger.Default.Register<ClearNewProjectSettingsMessage>(this,ClearSettings); 

但它仍然不起作用..

這是我想調用的方法(在視圖中):

private void ClearSettings() 
{ 
     passwordBox.Clear(); 
} 

謝謝。

回答

2

現在我還沒有用過MVVM光的使者,但與任何事件聚合/消息總線,它是有道理的,這樣的處理方法需要在其處理作爲參數的對象

我檢查了源代碼,並登記如下所示:

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

考慮到這一點,這樣的定義:

private void HandleClearSettings(ClearNewProjectSettingsMessage message) 
{ 
} 

應該修復您的註冊:

Messenger.Default.Register<ClearNewProjectSettingsMessage>(this, HandleClearSettings); 
+0

感謝您的回覆!我沒有意識到處理方法接受它作爲參數處理的對象..我使用這個註冊了消息:Messenger.Default.Send(new ClearNewQCProjectSettingsMessage());這可以嗎?我真的不明白你是如何註冊你的消息,因爲你沒有任何指向'ClearNewProjectSettingsMessage'的東西,我需要進一步研究,你能指向我的任何資源嗎?謝謝! – RegUser

+1

@Manal [這是我在Google上找到的一篇文章](http://tonychampion.net/blog/index.php/2010/07/messaging-in-silverlight-with-mvvm-light/),[這裏是源代碼](http://mvvmlight.codeplex.com/SourceControl/BrowseLatest),你可以在任何疑問時檢查。 :) –