title: WPF: Which collection class to use
body: <p>After spending a whole day trying different suggestions, I'm back at square 1. I'm trying to bind my view, a XAML Window, to one of my ViewModel properties, say, SalesOrders. The ViewModel in turn talks to the Model (an EF Model on top of a database). The question I'm facing is the collection type that I should use to expose my SalesOrders property.</p>
  
  <p>I have tried the following types, none of which does all of what I need.</p>
  
  <ol>
  <li><code>List&lt;T&gt;</code></li>
  <li><code>ObservableCollection&lt;T&gt;</code></li>
  <li><code>BindingList&lt;T&gt;</code></li>
  <li><code>CollectionViewSource</code> on top of the above</li>
  </ol>
  
  <p>Here's what I need my collection to do:</p>
  
  <ol>
  <li>The view has Previous/Next buttons, so the collection should provide some sort of currency manager.</li>
  <li>There's a Save button in the view, which I need to get enabled/disabled <strong>immediately</strong> based on whether the SalesOrder collection has any changes. Since <code>SalesOrder</code> is already an EF type, all of its fields implement <code>INotifyPropertyChanged</code>.</li>
  </ol>
  
  <p><code>CollectionViewSource</code> provides me with navigation methods (previous/next) but doesn't listen to PropertyChanged events, so modifying data in the view doesn't turn the Save button on. <code>BindingList</code> can listen to PropertyChanged events, but doesn't provide navigation methods. <code>ObservableCollection</code> lacks both functionalities.</p>
  
  <p>TIA.</p>