Pour définir le style lorsque l'élément est sélectionné ou pas, tout ce que vous avez à faire est de récupérer le ListBoxItem
parent dans votre <DataTemplate>
et de déclencher les changements de style lorsque celui-ci IsSelected
change. Par exemple, le code ci-dessous créera un TextBlock
avec la Foreground
couleur par défaut verte . Maintenant, si l'élément est sélectionné, la police deviendra rouge et lorsque la souris sera sur l'élément deviendra jaune . De cette façon, vous n'avez pas besoin de spécifier des modèles de données séparés comme suggéré dans d'autres réponses pour chaque état que vous souhaitez modifier légèrement.
<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>