У вас большая часть пути, у меня работает следующее:
Удалите ваш DataTemplate и поместите его содержимое прямо в новый UserControl, например, здесь, давайте назовем его MatchesView.
Затем в вашем TabConverter измените содержимое цикла foreach на что-то вроде следующего:
TabItem tabitem = new TabItem();
tabitem.Header = tab.Key;
MatchesView tabview = new MatchesView();
tabview.DataContext = parameter;
tabitem.Content = tabview;
result.Add(tabitem);
Примечание: для этого необходимо передать вашу ViewModel в TabConverter в качестве параметра, например:
<sdk:TabControl SelectedItem="{Binding YourSelectedObject}" ItemsSource="{Binding YourCollectionObject, Converter={StaticResource TabConverter}, ConverterParameter={StaticResource YourViewModel}, Mode=TwoWay}" />
Затем, поскольку у вас есть ViewModel в каждом экземпляре нового элемента управления, настройте привязку соответствующим образом!
Обратите внимание, что хитрость заключается в том, что у вас есть отдельная привязка для отдельного экземпляра выбранного объекта