wpf listbox styles listboxitem

wpf - ListBoxItem IsSelected style



styles (2)

Utilice la colección Triggers de DataTemplate, con un RelativeSource para acceder al ListBoxItem que contiene:

<DataTemplate> <Border BorderThickness="2" BorderBrush="Black" Name="Bd"> <StackPanel> <TextBlock Text="Name: " /> <TextBlock Text="{Binding Name}" /> </StackPanel> </Border> <DataTemplate.Triggers> <DataTrigger Value="True" Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"> <!-- everybody loves HotPink --> <Setter TargetName="Bd" Property="Background" Value="HotPink"/> </DataTrigger> </DataTemplate.Triggers> </DataTemplate>

Todavía no lo entendí. ¿Podría mostrarme exactamente cómo anular el comportamiento predeterminado de ListBox? Cada vez que se selecciona ListBoxItem, se debe cambiar el fondo del borde. No es el fondo de toda la fila sino solo el fondo del borde que se especifica.

<ListBox ItemsSource="{Binding Source={StaticResource AssetsViewSource}}"> <ListBox.ItemTemplate> <DataTemplate> <Border BorderThickness="2" BorderBrush="Black"> <StackPanel> <TextBlock Text="Name: " /> <TextBlock Text="{Binding Name}" /> </StackPanel> </Border> </DataTemplate> </ListBox.ItemTemplate> </ListBox>


Simplemente agregue lo siguiente en la etiqueta del elemento ListBox

<ListBox.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" /> </ListBox.Resources>

Eso debería hacer el truco..