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".