2012-06-30 14 views
7
<Grid x:Name="LayoutRoot"> 
    <ComboBox x:Name="com_ColorItems" Height="41" Margin="198,114,264,0" VerticalAlignment="Top" FontSize="13.333" FontWeight="Bold" Foreground="#FF3F7E24"/> 
</Grid> 

Con el código de Coloreé todos los elementos en el cuadro combinado verde.Cómo cambiar cuadro combinado determinado color del artículo de forma dinámica en WPF

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
     for (int i = 0; i < 5; i++) 
     { 
      com_ColorItems.Items.Add(i); 
     } 
} 

Con el código de He llenado cinco elementos en cuadro combinado. Ahora me gusta cambiar dinámicamente el color del tercer elemento (3) a "rojo" en el código. ¿Cómo puedo hacer eso?

Respuesta

10

En lugar de añadir el valor real de i en el cuadro combinado, agregue un ComboBoxItem lugar:

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     for (int i = 0; i < 5; i++) 
     { 
      ComboBoxItem item = new ComboBoxItem(); 

      if (i == 2) item.Foreground = Brushes.Blue; 
      else item.Foreground = Brushes.Pink; 

      item.Content = i.ToString(); 
      com_ColorItems.Items.Add(item); 
     } 
    } 

Si desea modificar el ComboBoxItem creada con este método más adelante, esta es la forma en que puede hacerlo:

var item = com_ColorItems.Items[2] as ComboBoxItem; // Convert from Object 
if (item != null)         // Conversion succeeded 
{ 
    item.Foreground = Brushes.Tomato; 
} 
1

Primero, intente enlazar su fuente y evite el acceso directo a través del código de detrás. Y que puede usar un convertidor en su Enlace de ItemSource.

p. Ej.

ItemSource={Binding MyComboboxItems, Converter={StaticResource MyConverter}} 

y en su convertidor a encontrar la tercera de artículos y darles una ForegroundColor diferente

+0

Podría dar un pequeño ejemplo. ¿Cuál es el tipo de MyComboboxItems? – marbel82

Cuestiones relacionadas