1

当出版物的 Read 属性发生变化时,如何更改 TotalPublicationsRead 的值?

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

提前致谢。

4

2 回答 2

4

如果您尝试做我认为的事情,那么我会更改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; }
    }
}
于 2009-11-10T12:46:16.680 回答
0

您可以使用依赖属性。

请在以下位置查看详细信息:http: //www.wpftutorial.net/dependencyproperties.html http://msdn.microsoft.com/en-us/library/ms745795(v=vs.110).aspx

于 2014-04-16T22:26:10.267 回答