Это старый вопрос, но я отвечу для тех, кто может искать это ...
Способ, которым я справился с этим с использованием шаблона MVVM, заключался в том, чтобы на моей ViewModel была и ObservableCollection, с которой TabControl связывает свой ItemsSource, а также свойство ActiveItem, с которым TabControl связывает свое свойство SelectedItem.
Он работает довольно хорошо и сохраняет принципы проектирования MVVM (т. Е. Модель представления не должна знать о представлении).