设置ItemsSource时更改组合框的BackGround颜色

时间:2016-01-03 13:45:35

标签: c# wpf combobox

我有一个wpf c#app。

我正在使用一个组合框,我将ItemsSource设置为我的Observable集合。

我想要的是组合框的背景不是灰色的。

此控件位于UserControl中。

<UserControl x:Class="InformedWorkerClient.UserControls.ucJobStatus"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:InformedWorkerClient.UserControls"
         mc:Ignorable="d" 
         d:DesignHeight="27" d:DesignWidth="300" Background="White">
<Grid Background="White">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>


    <ComboBox x:Name="cboJobStatus" Grid.Row="0" Grid.Column="0" Background="White"
        DisplayMemberPath="Description" 
        SelectedValuePath="JobStatusRef" 
        SelectedValue="{Binding Path=JobStatus}" SelectionChanged="cboJobStatus_SelectionChanged" />
</Grid>

其他:

这是选择项目后的背景。我希望背景为白色

enter image description here

2 个答案:

答案 0 :(得分:1)

由于ControlTemplate for ComboBox中存在错误,因此无法执行此操作。

可能的解决方案是复制/编辑模板并创建自己的模板。

这个问题是duplicate。或许可以通过更多信息更新答案。我搜索了wpf cant change background of combobox,顶部链接是关于如何copy the template的MSDN答案,但即使这样,解决方案也充斥着不同Windows版本的问题,aero主题,并没有解决用户高的情况对比度开启,以及其他可访问性问题。

答案 1 :(得分:0)

我建议使用<ComboBox.ItemContainerStyle>并为容器设置背景Transparent。然后每个项目背景将与ComboBox中一样。