我的列表框项目的样式如下:
<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的背景颜色。
答案 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)
使用MouseEnter
和MouseLeave
事件。
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;颜色。这应该会产生你想要的效果。