在鼠标上更改列表框项目的背景

时间:2014-08-01 20:54:04

标签: c# wpf xaml windows-7

我的列表框项目的样式如下:

<Style TargetType="ListBoxItem">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#007acc"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#007acc"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="WhiteSmoke"/>            
    </Style.Resources>
    <Setter Property="Padding" Value="5,2,5,2"/>
    <Setter Property="Margin" Value="0"/>
</Style>

但我无法弄清楚,当鼠标光标悬停在列表框上时,如何更改listboxitem的背景颜色。

2 个答案:

答案 0 :(得分:3)

要达到您想要的效果,请在 ListBoxItem Trigger属性上使用样式中的IsMouseOver IsMouseOver 是一个布尔属性,当鼠标位于ListBox项目上时,该属性自动设置为true。 (阅读MSDN documentation for IsMouseOver以更好地了解此属性的工作原理。)

带触发器的样式的XAML如下所示:

<Style TargetType="ListBoxItem">
    ...

    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>

(如果你查看MSDN documentation for Trigger,你会注意到我在这里给出的例子与文档中给出的例子没什么不同......)

答案 1 :(得分:0)

使用MouseEnterMouseLeave事件。

http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseenter(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseleave(v=vs.110).aspx

MouseEnter事件中,更改背景颜色。在MouseLeave上,恢复为&#34;正常&#34;颜色。这应该会产生你想要的效果。