我有一个通用的ShowMessage类,我想用它来传输数据:
class ShowMessage<T> {
private readonly T _Data;
public string Title { get; set; }
public T Data { get { return _Data; } }
public ShowMessage( T data) {
_Data = data;
}
}
在我的ViewModel中,我想注册所有可能的ShowMessage实例,但目前我还没找到方法。是否有人注册了通用基类(注意:我只想注册一次,而不是n次才能获得干净的代码)
修改
让我的问题更清楚:我知道我可以使用Register方法:
Messenger.Default.Register<List<string>>(this, StringList);
在这种情况下,我注册List<string>
。我想注册List<>
让一个处理程序作用于不同的有效负载(因为处理程序不需要知道有关负载的任何信息)
答案 0 :(得分:0)
mvvm light messenger允许您注册附加了特定对象的消息,只需将该注册放在代码的全局可用部分中,但是这样做,就像在父视图模型中那样,然后注册对于类型为ShowMessage的消息。然后,只要附加了ShowMessage类,任何类都会发送该消息,只要附加了ShowMessage类,它就会被捕获。
见这些:
http://blog.galasoft.ch/lbugnion/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx