在A类列表中通知类A对B类对象的属性更改有什么好方法

时间:2015-11-24 21:56:33

标签: c# .net windows-runtime

我有A和B类如下:

public class A
{
  private List<B> myList;

  public List<B> MyList
  {
      get { return myList; }
      set { myList = value; }
  }

  private bool allComplete;

  public bool AllComplete
  {
    get { return allComplete; }
    set { allComplete = value; }
  }

  public void CalculateAllComplete()
  {
    foreach (B item in MyList)
    {
      if (!item.IsComplete)
      {
        AllComplete = false;
        return;
      }
    }
    AllComplete = true;
  }
}

public class B
{
  private bool isComplete;

  public bool IsComplete
  {
    get { return isComplete; }
    set { isComplete = value; }
  }
}

每当属性IsComplete在类型A的对象MyList中的任何B类对象上发生更改时,我都需要收到通知。当发生这种情况时,我将调用CalculateAllComplete方法确定列表中的所有项目是否完整。

这样做的好方法是什么?

2 个答案:

答案 0 :(得分:5)

我会在B类上实现INotifyPropertyChanged接口,并让A类实例订阅任何属性更改。

答案 1 :(得分:1)

在B类中实现接口IObservable,并在A类中订阅B的实例 看看https://msdn.microsoft.com/library/dd990377.aspx