在wpf应用程序中更改组合框项目背景颜色

时间:2016-01-26 15:13:12

标签: c# .net wpf forms mvvm

我有一个wpf应用程序,我需要自定义一个组合框以使其可编辑。

public class AutoCompleteFacturation: ComboBox 
{
    List<vue_fsign_fiche_signaletique> liste = new List<vue_fsign_fiche_signaletique>();
    // [...]
    ItemsSource = NewDataSource;
    liste = NewDataSource.ToList<vue_fsign_fiche_signaletique>();
    ComboBoxItem item = (ComboBoxItem)base.Items[0];
    item.Background = System.Windows.Media.Brushes.AliceBlue;
}

我需要更改第一项ComboBoxItem item = (ComboBoxItem)base.Items[0]; ==&gt;的背景我收到异常表示无法将vue_fsign_fiche_signaletique转换为ComboBoxItem

那么如何解决此问题以使组合框的第一项着色?

谢谢

2 个答案:

答案 0 :(得分:2)

您获得的项目是使用DataSource绑定的项目(此处类型为vue_fsign_fiche_signaletique)。

您需要的是ComboBoxItem,这是一个容器。要获得它,请使用ItemContainerGenerator.ContainerFromIndex(index)ItemContainerGenerator.ContainerFromItem(item)

https://msdn.microsoft.com/library/ms750552(v=vs.90).aspx

答案 1 :(得分:1)

您已在列表中绑定了ComboBox

因此Items会返回vue_fsign_fiche_signaletique

列表

2可能性:

foreach (vue_fsign_fiche_signaletique fiche in liste) { ComboBoxItem i = new ComboBoxItem(); i.Content = fiche.Text; i.Background = System.Windows.Media.Brushes.AliceBlue; base.Items.Add(i); }

或者将您的vue_fsign_fiche_signaletique打包在查看模型中并使用 IValueConverter