2013-04-16 40 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),你可以在任何疑问时检查。 :) –