Để đặt kiểu khi mục được chọn hoặc không, tất cả những gì bạn cần làm là truy xuất mục ListBoxItem
gốc trong của bạn <DataTemplate>
và kích hoạt các thay đổi kiểu khi mục đó IsSelected
thay đổi. Ví dụ, đoạn mã dưới đây sẽ tạo ra một TextBlock
với Foreground
màu mặc định là xanh lục . Bây giờ nếu mục được chọn, phông chữ sẽ chuyển sang màu đỏ và khi chuột qua mục đó sẽ chuyển sang màu vàng . Bằng cách đó, bạn không cần chỉ định các mẫu dữ liệu riêng biệt như được đề xuất trong các câu trả lời khác cho mọi trạng thái mà bạn muốn thay đổi một chút.
<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>