3

当我将鼠标移到组合框上时,我想更改组合框的背景(mouseover )颜色。

我已经阅读了很多关于 stackoverflow 的帖子,并尝试过这样的代码:

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

这就是结果:

在此处输入图像描述

但这不是我想要的。我想改变这个背景:

在此处输入图像描述

我怎样才能做到这一点?

4

1 回答 1

2

天真的解决方案:只需将画笔添加到资源并从 ComboBox 的 Background 属性(通过 StaticResource 绑定)引用它:

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <SolidColorBrush x:Key="BackgroundColorKey" Color="Red"/>
    <Style TargetType="{x:Type ComboBox}">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="{StaticResource BackgroundColorKey}" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <ComboBox  Height="25"/>
</Grid>

问题:选择项目后,背景颜色被重置为默认颜色。解决此问题的唯一解决方案是覆盖组合框的默认模板。

修复:修改默认组合框模板。ComboBox 默认模板存在于 msdn 上。这是链接 - http://msdn.microsoft.com/en-us/library/ms752094(v=vs.100).aspx。请参阅“组合框控件模板示例”部分。

相关链接:

MouseOver 突出显示样式在一秒钟后返回默认值(由 Aero 引起?)

http://social.msdn.microsoft.com/Forums/en/wpf/thread/a18891e9-8879-4819-9679-247341782f60

于 2012-07-23T10:14:09.083 回答