template para modern for wpf control-template

para - wpf button template



WPF ListBox, ¿cómo ocultar el borde y cambiar el color de fondo del elemento seleccionado? (1)

Me gustaría ocultar el borde de ListBox y hacer que el fondo del elemento seleccionado sea el mismo que el no seleccionado.

¿Cómo hago esto?


Para ocultar el borde, use

<ListBox BorderThickness="0"/>

Si no desea tener una selección, use un ItemsControl lugar del ListBox .

El siguiente código oculta el borde alrededor de ListBox y siempre muestra un fondo blanco en el elemento (si se genera a través de la ItemsSource ItemsSource).

<ListBox BorderThickness="0" HorizontalContentAlignment="Stretch"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Padding" Value="0"/> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> <DataTemplate> <Grid Background="White"> <ContentPresenter Content="{Binding}"/> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox>

Si utiliza instancias de ListViewItem, debe cambiar el fondo allí.

ACTUALIZAR

Mientras tanto, he encontrado una solución que es IMO mucho más elegante:

<ListBox BorderThickness="0" HorizontalContentAlignment="Stretch" > <ListBox.Resources> <Style TargetType="ListBoxItem"> <Style.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/> </Style.Resources> </Style> </ListBox.Resources> </ListBox>

Esto también debería funcionar con las instancias de ListBoxItem y IMO es menos "alternativo".