我正在尝试创建一个通用方法,允许我的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(),我也没有收到消息。
有人可以帮帮我吗?这让我发疯了。