with values c# wpf combobox styles

c# - values - WPF Combobox Background para diferentes elementos seleccionados



combobox with values wpf (1)

Tengo Combobox con solo 3 elementos: Planing, Progress y Done,

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

¿Cómo puedo cambiar el color de fondo de ComboBox (que es por gradiente de Desafiante)? ​​Depende de qué elemento está seleccionado.

Por ejemplo: púrpura para Planing, azul para Progress y Green para Done.

Nota: Me refiero a ComboBox Background, no ComboBox Items List.

Gracias


1) Uso del evento selectionChanged

Puede configurarlo en el 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; } }

Se comboBox_SelectionChanged evento comboBox_SelectionChanged cada vez que se cambie el valor seleccionado en el cuadro combinado. En su interior, simplemente puede verificar el valor del elemento seleccionado y aplicar el color que desee.

Esta sería la xaml del Combobox

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

2) Usando DataTriggers en XAML

También se puede hacer a través de xaml configurando DataTrigger múltiple en el Style.Triggers como este

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

Más información sobre DataTriggers:

Representa un activador que aplica valores de propiedad o realiza acciones cuando los datos vinculados cumplen una condición especificada.