Я знаю, что сейчас это ужасно устарело, но я подумал, что я потрачу свои два цента только ради полноты и исторической точности:)
Я предпочитаю использовать ItemContainerStyle, чтобы делать то же самое только потому, что он мне кажется чище, потому что он точно определяет цель:
<TabControl ItemsSource="{Binding Items}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding FileName}" />
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<Border>
<TextBlock Text="{Binding Content}" />
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
Кроме того, если единственной целью является получение FileName во вкладках, то это может быть намного проще:
<TabControl ItemsSource="{Binding Items}" DisplayMemberPath="FileName" />