c#-ObservableCollection不会引发Fody更改的属性

我已经定义了这个类

[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();
  }
}
上一篇:如何使用LINQ C#过滤内部集合


下一篇:c# – 有没有办法从ObservableCollection中获取范围?