title: MVVM concept for collections and parent/child relationships
body: <p>In the model of my application I have a list of "parents" each referecing a list of "children" (e.g. a list of footballteams each containing a list of players).</p>
  
  <p>I visualize this list in a tree view.  I created a viewmodel-class for the tree and a viewmodel-class for a footballteam (let's call it "footballteamViewModel").  The class for the tree holds an ObservableCollection with footballteamViewModel-items.  The items-source for the tree is this ObservableCollection.  During initialization, I create for every footballteam in the model a corresponding footballteamViewModel object and add it to the ObservableCollection.</p>
  
  <p>The thing is, that the list of footballteams in my model can be changed from outside of the tree and I want the tree to be updated.  So if someone removes a footballteam from my list in the model, I would have to remove the corresponding item in my ObservableCollection of footballteamViewModel-items.</p>
  
  <p>I cannot bind the list of footballteams from the model directly to the view.  So I have to update my ObservableCollection in the ViewModel somehow, every time the collection in the model is changed.</p>
  
  <p>My way to handle this is to use an ObservableCollection in the model and register to the collectionChanged-event in the ViewModel, so that I update my ViewModel (the Observable Collection of footballteamViewModel objects) whenever the model-collection is changed.  But this does not feel "right". Is there a better way?</p>
  
  <p>While typing this I found another post which describes exactly the same problem: <a href="https://stackoverflow.com/questions/2906940/wpf-mvvm-delegating-a-domain-model-collection-to-a-viewmodel">WPF/MVVM: Delegating a domain Model collection to a ViewModel</a>. The answers there encourage me that the way I'm solving this problem is not totally wrong but still I wonder if there is another method.</p>
  
  <p>EDIT: From the first answers that you provided I assume that there is no definite answer to my question. They were all helpful, so it's worth reading them all. I only mark the answer with the reference to the Bindable Linq/Continous Linq/Optics frameworks, because I think it will help other who stumble over my question most.</p>