title: Lock / Unlock ObservableCollection<T>
body: <p>I have a requirement to allow or prevent modification to an <code>ObservableCollection&lt;T&gt;</code> (or at least a type that implements <code>INotifyCollectionChanged</code> for WPF binding) as well as the objects it contains based on a business rule.</p>
  
  <p>I can solve the issue of preventing modification to contained objects, but am not sure how to approach preventing change to the collection itself.  One option would be to subscribe to the <code>CollectionChanged</code> event and undo changes after they happen, but that is not elegant and represents a confusing contract to the client.</p>
  
  <p>What other approaches are there?</p>