Без обид, но ваш код - это запутанный беспорядок, который отвлекает от вашей реальной проблемы.Если вы упростите, вы увидите, что настройка DisplayMemberPath
работает точно так, как вы хотите:
XAML:
<TabControl ItemsSource="{Binding}" DisplayMemberPath="Header"/>
Код:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new List<TabItemModel>
{
new TabItemModel
{
Header = "First"
},
new TabItemModel
{
Header = "Second"
},
};
}
}
public class TabItemModel
{
public string Header
{
get;
set;
}
}
Результат:

Итак, проблема не в том, что TabControl.DisplayMemberPath
не работает - это где-то еще в вашем слишком сложном коде.Упростите, пока не найдете где.