MVVM Light Messenger通用方法

时间:2015-10-14 13:29:37

标签: c# wpf generics mvvm mvvm-light

我正在尝试创建一个通用方法,允许我的ObservableCollections订阅更改并自行更新。

我的通用功能是;

    public void SubscribeCollectionForUpdates<CType>(ObservableCollection<CType> collection, object receiver)
    {

        Messenger.Default.Register<AddedMessage<CType>>(receiver, (p) => {
            System.Windows.MessageBox.Show(p.AddedEntitiy.ToString());
            collection.Add(p.AddedEntitiy);

        });
    }

我的&#39; AddedMessage&#39; class is;

public class AddedMessage<T>
{
    public T AddedEntitiy { get; set; }
}

我将发送消息为

    Messenger.Default.Send<Messages.AddedMessage<MyType>>(new Messages.AddedMessage<MyType>() { 
AddedEntitiy = MyEntity 
});

我注意到,每当我在注册接收消息时尝试访问该集合时,我都不会收到任何消息。 (没有正确注册?)

collection.Add(p.AddedEntitiy);

参与

    public void SubscribeCollectionForUpdates<CType>(ObservableCollection<CType> collection, object receiver)
    {

        Messenger.Default.Register<Messages.AddedMessage<CType>>(receiver, (p) => {
            System.Windows.MessageBox.Show(p.AddedEntitiy.ToString());
            collection.Add(p.AddedEntitiy);

        });
    }

如果我删除collection.Add(p.AddedEntitiy);并使用MessageBox.Show()取代某些东西,这可行。但每当我访问该集合时,不仅要添加,即使我收集了.Clear(),我也没有收到消息。

有人可以帮帮我吗?这让我发疯了。

0 个答案:

没有答案