ObservableCollection不会使用Fody改变属性

时间:2015-05-22 10:43:01

标签: c# binding windows-phone-8.1 observablecollection

我已经定义了这个类

[ImplementPropertyChanged]
public class ChatInfo : IMessageData
{
    public ObservableCollection<Message> messages { get; set; }

    [JsonIgnore]
    public Message LastMessage
    {
        get
        {
            return messages.Last();
        }
    }
}

通过JSON.NET(James King)对类进行反序列化,然后手动将新项目推送到messagesLastMessage属性绑定到视图,但即使messages集合更改,也不会调用LastMessage getter。当我每次都将messages设置为新集合时,一切正常,为什么LastMessageObservableCollection的集合更改事件没有做出反应?

1 个答案:

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