Combobox颜色问题

时间:2016-02-24 10:59:46

标签: c# wpf combobox background

我在一个风格的窗口中有一个组合框。 我完全清楚问题存在于风格中,但由于是公司风格,所以我无法全球改变。我想做的就是在需要的时候进行OVVERRIDE。

enter image description here

正如您在上图中看到的,主要问题是背景是黑暗的。然后,小问题,它没有显示插入符号。

xaml是:

<ComboBox Name="cmbOptions" Grid.Row="6" Background="White" Width="300" Margin="10" BorderBrush="Black" Height="20" Foreground="Black" IsEditable="False">

感谢您的帮助 帕特里克

- ADD-- 我试过了

<ComboBox.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="Yellow" />
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red" />
</ComboBox.Resources>

但没有运气!

- ADD2--  我甚至在代码背后改变了它

//cmbOptions.ItemsSource = obcCategories;
for (int i = 0; i < ...; i++)
{
    ComboBoxItem item = new ComboBoxItem();
    item.Background = Brushes.White;
    item.Content = "AAA";
    ibw.cmbOptions.Items.Add(item);
} 

但它并不适用于后台,但它确实适用于前景。

--- --- ADD3

enter image description here

--- --- ADD4 enter image description here

1 个答案:

答案 0 :(得分:0)

您应该覆盖使用Window的{​​{1}}或UserControl中的全局样式。查看示例:

ComboBox

<强>更新

如果要以编程方式更改背景,请参阅以下代码:

<Window x:Class="DataGridSelectedItemsWpfApplication.MainWindow"
        ...The code omitted for the brevity...
        Title="MainWindow" WindowStartupLocation="CenterScreen" Height="350" Width="525">
    <Window.Resources>
        <Style TargetType="{x:Type ComboBoxItem}" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
            <Setter Property="Background" Value="Green" />
        </Style>
    </Window.Resources>
    <Grid>
        <ComboBox Name="comboBox">
            <ComboBoxItem Content="The first item"/>
            <ComboBoxItem Content="The second item"/>
            <ComboBoxItem Content="The third item"/>
        </ComboBox>
    </Grid>
</Window>

您的代码效果很好。您应该从private void SomeMethod() { ComboBoxItem item = new ComboBoxItem(); for (int start = 0; start < 10; start++) { if (item == null) item = new ComboBoxItem(); item.Background= Brushes.Green; item.Content = start.ToString(); comboBox.Items.Add(item); item = null; } } 中删除cmbOptions,例如:

ibw.cmbOptions.Items.Add(item);

如果我使用您的代码,我会得到什么:

enter image description here

更新1:

为什么它不起作用真的很有趣。再试一次:))

for (int i = 0; i < 10; i++)
{
    ComboBoxItem item = new ComboBoxItem();
    item.Background = Brushes.Yellow;
    item.Content = "AAA";
    comboBox.Items.Add(item);
}

<强> UPDATE2:

我已经为观看了一个样本。希望它有所帮助。

https://onedrive.live.com/redir?resid=D6BDF30773C16E01!2062&authkey=!AFw5eVP7NrZlus0&ithint=file%2crar