J'utilise AutoCompleteBox de WPFToolkit et j'ai besoin de changer la couleur d'arrière-plan de l'élément sélectionné, mais je ne peux pas le faire. Je peux changer le style de police, la taille de la police, mais pas l'arrière-plan.Configuration de AutoCompleteBox ListBox SelectedItem Couleur d'arrière-plan
J'ai essayé de nombreuses solutions de SO, mais aucune d'elles n'a fonctionné. Ce que j'ai essayé jusqu'à présent:
Change background color for selected ListBox item
Changing WPF Listbox SelectedItem text color and highlight/background Color using C#
L'utilisation d'un déclencheur pour changer l'arrière-plan de SelectedItem dynamiquement
<Style x:Key="myLBStyle" TargetType="ListBoxItem">
<Setter Property="Background" Value="IndianRed" />
<Setter Property="Foreground" Value="WhiteSmoke" />
<Setter Property="Margin" Value="0" />
<Setter Property="FontSize" Value="22" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="Chartreuse" />
<Setter Property="FontStyle" Value="Italic" />
<Setter Property="Foreground" Value="Chartreuse" />
</Trigger>
</Style.Triggers>
</Style>
<local:FocusableAutoCompleteBox x:Name="ACBox" Margin="10,32,10,0"
Grid.Row="2" FontSize="27" Grid.ColumnSpan="4" Foreground="#FF333333"
Background="#FF1700FF" BorderThickness="2" TextChanged="_ACBox_TextChanged"
KeyDown="ACBox_KeyDown" Focusable="True" MinimumPopulateDelay="100"
MinimumPrefixLength="1" ItemContainerStyle="{DynamicResource ResourceKey=myLBStyle}">
J'ai aussi essayé remplaçant les couleurs du système:
<Style x:Key="myLBStyle" TargetType="ListBoxItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green" />
</Style.Resources>
<Setter Property="Background" Value="IndianRed" />
<Setter Property="Foreground" Value="WhiteSmoke" />
<Setter Property="Margin" Value="0" />
<Setter Property="FontSize" Value="22" />
</Style>
Je peux suc Définissez d'autres propriétés avec le déclencheur. Je peux définir la police selecteditem en italique, en gras, plus grande, plus petite, mais je ne peux pas changer la couleur d'arrière-plan de l'élément sélectionné.
Merci beaucoup. Ça a marché. J'aimerais cependant savoir _why_ ça marche? Je comprends que j'ai ajouté le ListBox sur une grille, en définissant l'arrière-plan de la grille. Mais pourquoi ne pourrais-je pas changer la couleur sélectionnée de ListBox elle-même? –
La couleur de chaque élément est définie dans 'ListBoxItem', qui n'héritera pas de la couleur de son contrôle parent. – Iron
Je vois. C'est comme si le contrôle avait un style ListBoxItem pour le ListBox global et un autre ListBoxItem, son enfant, qui contient les éléments individuels. –