c# - Sfondo Combobox WPF per elementi selezionati diversi



styles (1)

1) Utilizzo dell'evento selectionChanged

Puoi configurarlo nell'evento 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'evento comboBox_SelectionChanged verrà chiamato ogni volta che viene modificato il valore selezionato nella casella combinata. Al suo interno puoi semplicemente verificare il valore dell'elemento selezionato e applicare il colore desiderato.

Questo sarebbe il xaml del Combobox

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

2) Utilizzo di DataTriggers in XAML

Può anche essere fatto attraverso l'xaml impostando più DataTrigger sullo Style.Triggers come questo

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

Ulteriori informazioni su DataTriggers:

Rappresenta un trigger che applica valori di proprietà o esegue azioni quando i dati associati soddisfano una condizione specificata.

Ho Combobox con solo 3 elementi: Planing, Progress and Done,

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

Come posso cambiare il colore di sfondo di ComboBox (che è per Defult Gradiant) Dipende da quale elemento è selezionato.

Ad esempio: viola per Planare, blu per Avanzamento e Verde per Fatto.

Nota: intendo sfondo ComboBox, non elenco di elementi ComboBox.

Grazie





styles