鼠标悬停时更改列表框项的背景

本文关键字:背景 列表 悬停 鼠标 | 更新日期: 2023-09-27 18:16:06

我的列表框项的样式是这样的:

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

但是我不知道,当鼠标光标悬停在一个列表框上时,如何改变它的背景颜色

鼠标悬停时更改列表框项的背景

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

带有触发器的样式的XAML看起来像这样:
<Style TargetType="ListBoxItem">
    ...
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>

(如果你检查MSDN文档中的触发器,你会注意到我在这里给出的例子看起来与文档中给出的例子没有太大的不同…)

使用MouseEnterMouseLeave事件

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

MouseEnter事件中,修改背景颜色。在MouseLeave上,恢复为"正常"颜色。这应该会得到你想要的效果