我已经定义了这个类
[ImplementPropertyChanged]
public class ChatInfo : IMessageData
{
public ObservableCollection<Message> messages { get; set; }
[JsonIgnore]
public Message LastMessage
{
get
{
return messages.Last();
}
}
}
该类通过JSON.NET(James King)反序列化,然后在我手动将新项目推送到消息之后. LastMessage属性绑定到视图,但是即使消息集合发生更改,也不会调用LastMessage getter.每次将消息设置为新集合时,一切正常,为什么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();
}
}