c# - dropdownstyle - wpf combobox itemtemplate



Contexte WPF Combobox pour différents éléments sélectionnés (1)

1) Utilisation de l'événement selectionChanged

Vous pouvez le configurer dans l'événement comboBox_SelectionChanged

private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (comboBox.SelectedItem.ToString() == "Planning")
    {
        comboBox.Background = Brushes.Purple;
    }
    else if (comboBox.SelectedItem.ToString() == "Progress")
    {
        comboBox.Background = Brushes.Blue;
    }
    else if (comboBox.SelectedItem.ToString() == "Done")
    {
        comboBox.Background = Brushes.Green;
    }
}

L'événement comboBox_SelectionChanged sera appelé chaque fois que la valeur sélectionnée dans la liste déroulante est modifiée. A l'intérieur, vous pouvez simplement vérifier la valeur de l'élément sélectionné et appliquer la couleur souhaitée.

Ce serait le xaml de la Combobox

<ComboBox x:Name="comboBox" SelectionChanged="comboBox_SelectionChanged"/>

2) Utilisation de DataTriggers dans XAML

Il peut également être fait à travers le xaml en mettant en place plusieurs DataTrigger sur le Style.Triggers comme celui-ci

<ComboBox x:Name="mycombobox">
    <ComboBox.Style>
        <Style TargetType="{x:Type ComboBox}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=SelectedItem.Content, ElementName=mycombobox}" Value="Planning">
                    <Setter Property="Background" Value="Purple" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=SelectedItem.Content, ElementName=mycombobox}" Value="Progress">
                    <Setter Property="Background" Value="Blue" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=SelectedItem.Content, ElementName=mycombobox}" Value="Done">
                    <Setter Property="Background" Value="Green" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox.Style>
    <ComboBoxItem Content="Planning"/>
    <ComboBoxItem Content="Progress"/>
    <ComboBoxItem Content="Done"/>
</ComboBox>

Plus d'informations sur DataTriggers:

Représente un déclencheur qui applique des valeurs de propriété ou effectue des actions lorsque les données liées remplissent une condition spécifiée.

J'ai Combobox avec juste 3 article: Planing, progrès et fait,

<ComboBox SelectedIndex="0>
    <ComboBoxItem Content="Planing"/>
    <ComboBoxItem Content="Progress"/>
    <ComboBoxItem Content="Done"/>
</ComboBox>

Comment puis-je changer la couleur d'arrière-plan de ComboBox (qui est par Defult Gradiant) dépend de l'élément qui est sélectionné.

Par exemple: violet pour Planing, bleu pour Progress et Green pour Done.

Remarque: je veux dire l'arrière-plan ComboBox, pas la liste des éléments ComboBox.

Merci





styles