MVVM Light:为messenger注册通用类

时间:2013-05-16 16:59:39

标签: c# mvvm-light

我有一个通用的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<>让一个处理程序作用于不同的有效负载(因为处理程序不需要知道有关负载的任何信息)

1 个答案:

答案 0 :(得分:0)

mvvm light messenger允许您注册附加了特定对象的消息,只需将该注册放在代码的全局可用部分中,但是这样做,就像在父视图模型中那样,然后注册对于类型为ShowMessage的消息。然后,只要附加了ShowMessage类,任何类都会发送该消息,只要附加了ShowMessage类,它就会被捕获。

见这些:

http://blog.galasoft.ch/lbugnion/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx

MVVM light: Pass object from view to viewmodel