Как изменить значение свойства на основе изменений другого свойства (ObservableCollection)? - PullRequest
1 голос
/ 10 ноября 2009

Как изменить значение TotalPublicationsRead, если свойство Read публикации было изменено?

public class Report
{
   public ObservableCollection<Publication> Publications { get; set; }
   public int TotalPublicationsRead { get; set; }
}

public class Publication : INotifyPropertyChanged
{
   private bool read;
   public bool Read 
   { 
      get { return this.read; }
      set
      {
         if (this.read!= value)
         {
             this.publications = value;
             OnPropertyChanged("Read");
         }
      }
   }

   #region INotifyPropertyChanged Members

   public event PropertyChangedEventHandler PropertyChanged;

   #endregion

   private void OnPropertyChanged(string property)
   {
       if (this.PropertyChanged != null)
       {
           PropertyChanged(this, new PropertyChangedEventArgs(property));
       }
   }           
}

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 10 ноября 2009

Если вы пытаетесь сделать то, что я думаю, я бы изменил свойство TotalPublicationsRead и забыл о событиях. В приведенном ниже коде я просто считаю элементы в списке, где Publication было Read.

То, как вы пытались это сделать, вам понадобится обработчик события, когда ObserableCollection изменится. Затем вам нужно будет прикрепить обработчик события к событию PropertyChanged, который будет увеличивать или уменьшать свойство TotalPublicationsRead. Я уверен, что это сработает, но это будет намного сложнее.

public class Report
{
    public List<Publication> Publications { get; set; }
    public int TotalPublicationsRead 
    {
        get 
        { 
            return this.Publications.Count(p => p.Read); 
        }
    }

}

public class Publication : INotifyPropertyChanged
{
    private bool read;
    public bool Read
    {
        get { return this.read; }
        set { this.read = value; }
    }
}
0 голосов
/ 17 апреля 2014

Вы можете использовать свойство зависимости.

Пожалуйста, проверьте детали по адресу: http://www.wpftutorial.net/dependencyproperties.html http://msdn.microsoft.com/en-us/library/ms745795(v=vs.110).aspx

...