Para establecer el estilo cuando el elemento está seleccionado o no, todo lo que necesita hacer es recuperar el ListBoxItem
padre en su <DataTemplate>
y activar cambios de estilo cuando IsSelected
cambie. Por ejemplo, el siguiente código creará un color verdeTextBlock
predeterminado . Ahora, si el elemento se selecciona, la fuente se volverá roja y cuando el mouse esté sobre el elemento se volverá amarillo . De esa manera, no es necesario que especifique plantillas de datos separadas como se sugiere en otras respuestas para cada estado que le gustaría cambiar ligeramente.Foreground
<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>