WPF ListBox, comment masquer la bordure et changer la couleur de fond de l'article sélectionné?
j'aimerais cacher la bordure de ListBox, et faire en sorte que l'arrière-plan de l'élément sélectionné soit le même que celui de l'élément non sélectionné.
comment je fais ça?
27
demandé sur
Andreas Niedermair
2010-07-28 14:19:29
1 réponses
pour masquer la frontière, utilisez
<ListBox BorderThickness="0"/>
Si vous ne voulez pas avoir une sélection, utilisez un ItemsControl
au lieu de ListBox
.
le code suivant cache la bordure autour de la ListBox et affiche toujours un fond blanc sur l'élément (si celui-ci est généré par le ItemsSource
-propriété).
<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 vous utilisez ListViewItem-instances, vous devez changer l'arrière-plan.
UPDATE
En attendant, j'ai j'ai trouvé une solution beaucoup plus élégante:
<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>
cela devrait fonctionner aussi avec ListBoxItem-instances et est IMO moins "work-around".
51
répondu
HCL
2010-08-02 11:48:35