7
A
回答
2
这里有一个稍微天真的做法:
<ComboBox
ItemsSource="{x:Static Fonts.SystemFontFamilies}"
Width="100"
>
<ComboBox.Style>
<Style TargetType="ComboBox">
<Setter Property="Background" Value="Green" />
<Style.Triggers>
<Trigger Property="IsDropDownOpen" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
最初,这台Background
属性Green
,但安排它去Red
下拉出现时。但是,有两个问题:
- 在某些Windows主题(例如,在Vista和Windows 7中使用Aero主题),绿色背景被通过主题使用指示蓝色颜色掩盖了下拉的按钮已被按下。所以按钮在淡入青色之前会短暂地变绿。
ComboBox.Background
属性只影响按钮本身的外观,而不影响下拉列表。有可能你想要做的是改变弹出部分的背景颜色。
如果2是你想要的,这样做的伎俩:
<ComboBox
ItemsSource="{x:Static Fonts.SystemFontFamilies}"
Width="100" >
<ComboBox.Resources>
<Style TargetType="ComboBoxItem">
<Setter Property="Background" Value="Orange" />
</Style>
</ComboBox.Resources>
</ComboBox>
严格地说,这实际上改变出现在下拉列表中ComboBoxItem
控制的背景颜色,但将产生预期的效果。
但是,如果您想修复1,则需要自定义模板,因为内置的ComboBox
模板并不能真正为Background
属性提供很好的支持,因为它会更改按钮部分的颜色在各种情况下。 Aero主题的外观ComboBox
实际上不是为支持自定义背景色而设计的,因此您需要为控件创建自己的自定义外观。
0
好了,要回答你的代码背后的问题:
项添加到您的组合框:
foreach (String tag in tags)
{
ComboBoxItem item = new ComboBoxItem();
item.Content = tag;
cbTags.Items.Add(item);
}
然后你就可以修改项目的背景颜色:
((ComboBox)o).Background = GetBrushByRGB(r, g, b);
foreach (ComboBoxItem item in ((ComboBox)o).Items)
{
item.Background = GetBrushByRGB(r, g, b);
}
所以基本上你需要改变ComboBoxItem的背景颜色。
0
首先,您需要获取Combobox的默认模板(如果需要它们,请参阅下面的详细信息)。然后,把这个XAML的第一个“ControlTemplate.Triggers”标签内:
<DataTrigger Binding="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Value="True">
<Setter Property="Background" TargetName="templateRoot" Value="Red"/>
</DataTrigger>
你的组合框按钮为红色时的下拉是开放的。
获取默认模板:在Visual Studio 2015中,以设计模式查看您的页面。然后,右键单击组合框,然后选择“编辑模板 - >编辑副本”。这将为您生成默认模板。
相关问题
- 1. WPF组合框禁用背景颜色
- 2. WPF更改组合框的背景颜色
- 3. WPF组合框的颜色
- 4. 更改组合框边框颜色
- 5. 如何更改组合框的背景
- 6. WPF:多个前景颜色组合框
- 7. 如何更改组合框的背景颜色
- 8. WPF xaml绑定组合框背景颜色为SelectedItem的颜色
- 9. 更改MFC中组合框的项目背景颜色?
- 10. 改变组合框的背景色,根本不改变颜色
- 11. 更改WPF组合框的边框颜色
- 12. 如何更改WPF组合框中选定文本的颜色?
- 13. 如何更改所有组合框元素上的组合框的背景颜色?
- 14. 更改WPF数据绑定组合框中分隔符的背景颜色
- 15. WPF更改代码中可编辑组合框的背景颜色
- 16. Jquery:与背景组合框
- 17. WPF Datagrid,设置组合框的背景
- 18. WPF组合框与自定义样式,不能展开后点击组合框内的组合框
- 19. WPF ComboBoxItem当组合框SelectedIndex为-1时,背景更改
- 20. 如何更改组合框WPF的CornerRadius
- 21. 如何更改禁用的背景色组合框
- 22. 文本框和组合框不显示主题背景颜色
- 23. WPF组合框颜色绑定问题
- 24. C#组合框颜色
- 25. 以编程方式更改WPF可编辑组合框的背景颜色
- 26. WPF:在某些组合框项目更改背景
- 27. 如何绑定组合框组合框在WPF
- 28. 如何在datagrid中打开组合框
- 29. 组合框选定索引更改所有组合框更改
- 30. 当组合框在组合框中时,在vbnet中填充组合框
你能告诉我们你正在使用什么语言或框架吗? – Dominic 2013-02-12 05:40:55
什么编程语言? – spajce 2013-02-12 06:31:35
你好,这是WPF(。净) – Nimesh 2013-02-13 06:11:43