编程语言
首页 > 编程语言> > c#-ObservableCollection不会引发Fody更改的属性

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

标签:binding,windows-phone-8-1,observablecollection,c
来源: https://codeday.me/bug/20191028/1951383.html