我已经定义了这个类
[ImplementPropertyChanged]
public class ChatInfo : IMessageData
{
public ObservableCollection<Message> messages { get; set; }
[JsonIgnore]
public Message LastMessage
{
get
{
return messages.Last();
}
}
}
通过JSON.NET(James King)对类进行反序列化,然后手动将新项目推送到messages
。 LastMessage
属性绑定到视图,但即使messages
集合更改,也不会调用LastMessage
getter。当我每次都将messages
设置为新集合时,一切正常,为什么LastMessage
对ObservableCollection
的集合更改事件没有做出反应?
答案 0 :(得分:4)
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();
}
}