gpt4 book ai didi

wpf - 如何在 WPF 中单击(组合框打开)时更改组合框背景颜色?

转载 作者:行者123 更新时间:2023-12-01 21:23:45 25 4
gpt4 key购买 nike

谁知道

如何在 WPF 中单击时更改组合框背景颜色(组合框打开)?

最佳答案

这是一个有点幼稚的方法:

<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。但是,这样做有两个问题:

  1. 在某些 Windows 主题中(例如 Vista 和 Windows 7 中使用的 Aero 主题),绿色背景会被主题用来指示下拉菜单按钮已被按下的蓝色所遮盖。因此该按钮会短暂变为绿色,然后逐渐变为青色。
  2. 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 提供很好的支持code> 属性,因为它会在各种情况下改变按钮部分的颜色。 Aero 主题的 ComboBox 外观实际上并不支持自定义背景颜色,因此您需要为控件创建自己的自定义外观。

关于wpf - 如何在 WPF 中单击(组合框打开)时更改组合框背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14825896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com