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();
  }
}