ComboBox un problème de Foreground
Hier en mettant à jour mon applis, je me suis aperçu que la propriété Foreground avait un comportement assez étrange sur la ComboBox.
En effet le SelectedItem n’avait plus le Foreground appliqué quand la comboBox avait plus de six entrés!
Voici mon le code :
<StackPanel Background="Pink" Orientation="Vertical"> <ComboBox x:Name="cb" Margin="4" SelectedIndex="0" Foreground="Blue"> <ComboBoxItem>aa</ComboBoxItem> <ComboBoxItem>bb</ComboBoxItem> <ComboBoxItem>cc</ComboBoxItem> <ComboBoxItem>dd</ComboBoxItem> <ComboBoxItem>ee</ComboBoxItem> </ComboBox> <ComboBox x:Name="cb1" Margin="4" SelectedIndex="0" Foreground="Blue"> <ComboBoxItem>aa</ComboBoxItem> <ComboBoxItem>bb</ComboBoxItem> <ComboBoxItem>cc</ComboBoxItem> <ComboBoxItem>dd</ComboBoxItem> <ComboBoxItem>ee</ComboBoxItem> <ComboBoxItem>ff</ComboBoxItem> </ComboBox> </StackPanel>
Et le rendu qu’on obtient :
Pourquoi le rendu est différent à partir de 6 items?
Il se trouve que quand on a peu d’items, lorsque l’on ouvre la combo, celle ci n’est pas en plein écran.
Or, à partir de 6, la combo se met en full screen et utilise donc un autre template pour afficher son selected Item.
Comment résoudre ce problème?
Il suffit de modifier le style du ComboBox d’appliquer le Foreground sur le FlyoutButton.
<Button x:Name="FlyoutButton" Foreground="{TemplateBinding Foreground}" Padding="6.5,0,0,0" Grid.Row="1">
Vous pouvez télécharger le projet de démo avec le bug et comment le résoudre ici.