ในการตั้งค่าสไตล์เมื่อมีการเลือกรายการหรือไม่สิ่งที่คุณต้องทำคือดึงข้อมูลListBoxItem
หลักใน<DataTemplate>
สไตล์ของคุณและทริกเกอร์เมื่อมีIsSelected
การเปลี่ยนแปลง ตัวอย่างโค้ดด้านล่างจะสร้างTextBlock
ด้วยเริ่มต้น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>