Чтобы установить стиль, когда элемент выбран или не выбран, все, что вам нужно сделать, это извлечь родительский элемент ListBoxItem
в <DataTemplate>
и вызвать изменение стиля при изменении его IsSelected
. Например, приведенный ниже код создаст TextBlock
со значением по умолчанию Foreground
color green . Теперь, если элемент выбран, шрифт станет красным , а когда мышь над ним, элемент станет желтым . Таким образом, вам не нужно указывать отдельные шаблоны данных, как это предлагается в других ответах, для каждого состояния, которое вы хотите немного изменить.
<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>