2012-06-30 27 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> 

Yukarıdaki kodla birlikte açılan kutulardaki tüm öğeleri yeşil olarak renklendirdim. Yukarıdaki kod ileOrtak kutu rengini dinamik olarak değiştirme wpf

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

combobox içine beş öğeleri doldurdu. Şimdi 3. maddenin (3) rengini dinamik olarak arkasındaki kodda "kırmızı" olarak değiştirmek istiyorum. Bunu nasıl yapabilirim?

cevap

10

yerine combobox i gerçek değerini ekleyerek, bir ComboBoxItem yerine ekleyin:

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); 
     } 
    } 

daha sonra bu yöntemle oluşturulan ComboBoxItem değiştirmek istiyorsanız, bu bunu nasıl olduğunu:

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

İlk olarak, Kaynak bağlamak ve doğrudan arkasında kod üzerinden erişmeye kaçınmaya çalışın. Ayrıca, bir Öğe Bağlamında bir Dönüştürücü kullanabilirsiniz.

örn.

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

ve Dönüştürücü'nün

size 3 Öğe bulmak ve küçük bir örnek verebilir onlara farklı bir ForegroundColor

+0

ver. MyComboboxItems türü nedir? – marbel82

İlgili konular