title: How to watch for changes in collection objects inside custom collection
body: <p>I am making a custom collection that is based off a list, its purpose is to be Observable,Prevent Duplicates,Sorted etc.</p>
  
  <p>I have an add method like so :</p>
  
  <pre><code>    public class SortedObservableCollection&lt;T&gt; : List&lt;T&gt;, INotifyPropertyChanged, INotifyCollectionChanged
      {
          public void Add(T item)
          {
              base.Add(item);
              base.Sort();
              this.OnPropertyChanged("Count");
              this.OnPropertyChanged("Item[]");
              this.OnCollectionChanged(NotifyCollectionChangedAction.Add, item);
          }
  }
  </code></pre>
  
  <p>But somehow when the object is directly changed inside the collection I need an automatic resort to happen, or for the collection to be notified so it can do a sort again.</p>
  
  <p>Like :</p>
  
  <pre><code>SortedObservableCollection&lt;IRCUser&gt; users = new SortedObservableCollection&lt;IRCUser&gt;();
  users.Add(new IRCUser { Nick = "User1", Status = IRCUserStatus.Unknown });
  users.Add(new IRCUser { Nick = "User2", Status = IRCUserStatus.Unknown });
  users.Add(new IRCUser { Nick = "User3", Status = IRCUserStatus.Unknown });
  
  
  users.Single(x =&gt; x.Nick == "User3").Nick = "User11";
  </code></pre>
  
  <p>The User3 stays at the bottom of the collection, please note I am using my own IComparable implementation and its not just an alphabetical sort.</p>
  
  <p>I need the collection to catch this change and notify me so I can do something.</p>
  
  <p>I know I will have to implement INotifyPropertyChanged on the objects, but what I am unsure about is how will the collection catch that, the only way I can see is if on the add method I do :</p>
  
  <pre><code>item.PropertyChanged += (o,e) { ..check then... base.Sort(); };
  </code></pre>
  
  <p>But if I have 10,000 users is this the way to go?</p>