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.