I just noticed that when using the MVVM pattern for docking windows (aka DocumentItemsSource), while adding to the DocumentItems creates a new tab (as expected), closing a tab does not remove it from DocumentItems. In other words, as soon as you start closing tabs, the DocumentItems becomes "out-of-sync" with the tabs. If you were to repeatedly open a document, close its tab, reopen it, close its tab, etc - you would end up with an infinitely-growing list of DocumentItems.
My code came directly from the sample project - I only added the ability to open documents.
I'm pretty new to WPF/MVVM, but is this the intended behavior? My understanding was that the purpose of binding would be to (in this case) always have the DocumentItems represent the tabs, and vice-versa...