Per impostare lo stile quando l'elemento è selezionato o meno, tutto ciò che devi fare è recuperare il ListBoxItem
genitore nel tuo <DataTemplate>
e attivare le modifiche di stile quando IsSelected
cambia. Ad esempio, il codice seguente creerà un TextBlock
con il Foreground
colore predefinito verde . Ora se l'elemento viene selezionato, il carattere diventerà rosso e quando il mouse è sopra l'elemento diventerà giallo . In questo modo non è necessario specificare modelli di dati separati come suggerito in altre risposte per ogni stato che si desidera modificare leggermente.
<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>