ObservableCollection 不引发 属性 改变与 Fody
ObservableCollection does not raise property changed with Fody
我已经定义了这个class
[ImplementPropertyChanged]
public class ChatInfo : IMessageData
{
public ObservableCollection<Message> messages { get; set; }
[JsonIgnore]
public Message LastMessage
{
get
{
return messages.Last();
}
}
}
class 通过 JSON.NET(James King) 反序列化,然后在我手动将新项目推送到 messages
之后。 LastMessage
属性 绑定到视图,但即使 messages
集合发生变化,也不会调用 LastMessage
getter。当我每次都将 messages
设置为新集合时,一切正常,为什么 LastMessage
对来自 ObservableCollection
的集合更改事件没有反应?
LastMessage 不会对集合更改做出反应,因为消息保持不变。
您需要订阅您的可观察集合的事件。
[ImplementPropertyChanged]
public class ChatInfo : IMessageData
{
public ObservableCollection<Message> messages { get; set; }
messages.CollectionChanged += new
System.Collections.Specialized.NotifyCollectionChangedEventHandler(MessageChanged);
[JsonIgnore]
public Message LastMessage {get; private set;}
private void MessageChanged(object sender, NotifyCollectionChangedEventArgs e)
{
//set the property here
LastMessage = messages.Last();
}
}
我已经定义了这个class
[ImplementPropertyChanged]
public class ChatInfo : IMessageData
{
public ObservableCollection<Message> messages { get; set; }
[JsonIgnore]
public Message LastMessage
{
get
{
return messages.Last();
}
}
}
class 通过 JSON.NET(James King) 反序列化,然后在我手动将新项目推送到 messages
之后。 LastMessage
属性 绑定到视图,但即使 messages
集合发生变化,也不会调用 LastMessage
getter。当我每次都将 messages
设置为新集合时,一切正常,为什么 LastMessage
对来自 ObservableCollection
的集合更改事件没有反应?
LastMessage 不会对集合更改做出反应,因为消息保持不变。 您需要订阅您的可观察集合的事件。
[ImplementPropertyChanged]
public class ChatInfo : IMessageData
{
public ObservableCollection<Message> messages { get; set; }
messages.CollectionChanged += new
System.Collections.Specialized.NotifyCollectionChangedEventHandler(MessageChanged);
[JsonIgnore]
public Message LastMessage {get; private set;}
private void MessageChanged(object sender, NotifyCollectionChangedEventArgs e)
{
//set the property here
LastMessage = messages.Last();
}
}