Combobox Mouseover

只愿长相守 提交于 2019-12-01 07:26:53

问题


I would like to change the background (mouseover) color of my combobox when i move with a mouse over it.

I have read many post on stackoverflow and have tried a code like this:

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

and thats the result:

But that's not what I wanted. I want to change this background:

How can I do that?


回答1:


Naive Solution: Just add brush to the resources and reference it from the Background property (via StaticResource binding) of the ComboBox:

<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>

Problem: After item is selected the background color is reset back to the default color. The only solution to fix this is to override the default template of the combobox.

Fix: Modify default ComboBox template. ComboBox default template is present on msdn. Here is the link - http://msdn.microsoft.com/en-us/library/ms752094(v=vs.100).aspx. See "ComboBox ControlTemplate Example" section.

Related links:

MouseOver highlighting style returning to default after a second (Caused by Aero?)

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



来源:https://stackoverflow.com/questions/11610339/combobox-mouseover

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!