Надеюсь, я понимаю, что вы просили. Мое предлагаемое решение:
Ресурсы:
<Style TargetType="ListViewItem" x:Key="ItemStyle">
<Setter Property="Background" Value="Red"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true">
<Setter Property="Background" Value="Blue"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border Name="Border"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}">
<ContentPresenter Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{TemplateBinding Padding}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
<DataTemplate x:Key="TabListViewItemTemplate">
<TextBlock Text="{Binding }" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</DataTemplate>
И ListView:
<ListView x:Name="lvTabs" Width="100" Height="200"
HorizontalAlignment="Left" VerticalAlignment="Top"
ItemsSource="{Binding }" ItemTemplate="{StaticResource TabListViewItemTemplate}"
ItemContainerStyle="{StaticResource ItemStyle}" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
Я добавил массив строк для проверки решения.
this.DataContext = new string[] { "Tab1", "Tab2" };
Он должен работать с любым DataTemplate, так как он меняет только фон.