title: Trigger InotifyPropertyChanged/CollectionChanged on ObservableCollection
body: <p>I've tried looking at other topics on this but I haven't found a working implementation to my question.  Basically, I have an ObservableCollection called "FruitBasket" that contains different kinds of fruit.  FruitBasket itself contains <em>ObservableCollections</em> for each respective type of fruit that passes through so that they can be used as <em>ItemSources</em> for <em>ListViews</em> (Denoted by their names "AppleContainer" and "OrangeContainer"), each displaying one kind of fruit.  Because the fruit classes themselves implement INotifyPropertyChanged, modifying their values triggers updates to the ListView controls just fine, however, FruitBasket has a "TotalWeight" property derived from the weights of all the other fruits in the collections.  I want "TotalWeight" to update the <em>Label</em> control in the UI without me having to refresh the UI.  Triggerering a notification on a property change of the actual <em>ObservableCollection</em> itself, and not simply its constituent members is more difficult and I haven't found any solutions that work so far (or that I've implemented correctly).</p>
  
  <pre><code>public class FruitBasket : ObservableCollection&lt;IFruit&gt;
  {
      private decimal _totalWeight;
  
      public FruitBasket()
      {
          this.Add(new OrangeContainer(this));
          this.Add(new AppleContainer(this));
      }
  
      public OrangeContainer Oranges
      {
          get { return (OrangeContainer)this.Items[0]; }
      }
  
      public AppleContainer Apples
      {
          get { return (AppleContainer)this.Items[1]; }
      }
  
      public decimal TotalWeight
      {
          get { return _totalWeight; }
          set { _totalWeight = value; }
      }
  
      internal void UpdateWeight(IFruit caller)
      {
          _totalWeight = 0;
          foreach (Orange orng in (OrangeContainer)this.Items[0])
          {
              _totalWeight += orng.Weight;
          }
          foreach (Apple appl in (AppleContainer)this.Items[1])
          {
              _totalWeight += appl.Weight;
          }
      }
  </code></pre>