title: Setting ItemsSource before or after adding items changes object?
body: <p>I have a bit of a weird situation, I've implemented a <em>ObservableConcurrentDictionary</em> (based on the <em>ConcurrentDictionary</em> from .NET), which I used to implement <em>ObservableConcurrentCollection</em> (which just automatically sets the Key property in the Dictionary, and has all the IList, IEnumerable, IQueryable and ICollection methods). This is all working fine when I do something like:</p>
  
  <pre><code>ObservableConcurrentCollection&lt;string&gt; items = new ObservableConcurrentCollection&lt;string&gt;();
  dataGrid.ItemsSource = items;
  items.Add("TEST");
  </code></pre>
  
  <p>This is reflected perfectly in the DataGrid.</p>
  
  <p>However, when I do this:</p>
  
  <pre><code>ObservableConcurrentCollection&lt;string&gt; items = new ObservableConcurrentCollection&lt;string&gt;();
  items.Add("TEST"); // &lt;-- Notice that this and the line below are swapped.
  dataGrid.ItemsSource = items;
  </code></pre>
  
  <p>It's not working correctly as an item from 'items' suddenly became a KeyValuePair. I can easily fix this by using dataGrid.ItemsSource = items.Values in the last line, but I'd rather have it working just like the previous one (and it's also confusing).</p>