Aby ustawić styl, gdy element jest zaznaczony lub nie wszystko, co musisz zrobić, to odzyskać ListBoxItem
rodzica w swoim <DataTemplate>
i wywołać zmiany stylu, gdy się IsSelected
zmieni. Na przykład poniższy kod utworzy TextBlock
domyślny Foreground
kolor zielony . Teraz, jeśli element zostanie wybrany, czcionka zmieni kolor na czerwony, a gdy wskaźnik myszy znajdzie się nad elementem, zmieni kolor na żółty . W ten sposób nie musisz określać oddzielnych szablonów danych, jak sugerują inne odpowiedzi dla każdego stanu, który chcesz nieznacznie zmienić.
<DataTemplate x:Key="SimpleDataTemplate">
<TextBlock Text="{Binding}">
<TextBlock.Style>
<Style>
<Setter Property="TextBlock.Foreground" Value="Green"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={
RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem }}}"
Value="True">
<Setter Property="TextBlock.Foreground" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsMouseOver, RelativeSource={
RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem }}}"
Value="True">
<Setter Property="TextBlock.Foreground" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>