我在一个风格的窗口中有一个组合框。 我完全清楚问题存在于风格中,但由于是公司风格,所以我无法全球改变。我想做的就是在需要的时候进行OVVERRIDE。
正如您在上图中看到的,主要问题是背景是黑暗的。然后,小问题,它没有显示插入符号。
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
答案 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);
如果我使用您的代码,我会得到什么:
更新1:
为什么它不起作用真的很有趣。再试一次:))
for (int i = 0; i < 10; i++)
{
ComboBoxItem item = new ComboBoxItem();
item.Background = Brushes.Yellow;
item.Content = "AAA";
comboBox.Items.Add(item);
}
<强> UPDATE2:强>
我已经为观看了一个样本。希望它有所帮助。