Взаимодействие ListBox ItemContainerStyle и ItemTemplate
У меня есть список со списком отображения флажка, и я хотел бы изменить передний план флажка в зависимости от того, выбран элемент в списке или нет (не установлен ли флажок). Поведение элемента управления является хорошим, если ItemTemplate является простым TextBlock, однако передний план не изменяется, если ItemTemplate установлен.
Может кто-нибудь объяснить мне, почему это не работает для флажка?
С TextBox:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Foreground" Value="Black" />
<Style.Triggers>
<Trigger Property="ListBoxItem.IsSelected" Value="True">
<Trigger.Setters>
<Setter Property="Foreground" Value="White" />
</Trigger.Setters>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=TextToDisplay}" />
</DataTemplate>
</ListBox.ItemTemplate>
С CheckBox:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Foreground" Value="Black" />
<Style.Triggers>
<Trigger Property="ListBoxItem.IsSelected" Value="True">
<Trigger.Setters>
<Setter Property="Foreground" Value="White" />
</Trigger.Setters>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Path=TextToDisplay}" />
</DataTemplate>
</ListBox.ItemTemplate>
1 ответ
Ты можешь использовать Foreground
переплет
<CheckBox
Content="{Binding Path=TextToDisplay}"
Foreground="{Binding Path=Foreground,
RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"
/>