WPF中鼠标离开按钮时是否存在获取控件默认颜色的内置方法?
解决方案
方案1:修改现有后台代码,1行即可解决
你现在的写法是直接给Fill属性赋值本地值,优先级高于你提前设置的默认样式/模板值,只需要在鼠标移出时清除这个本地赋值,就能自动恢复到原有默认颜色,不需要手动指定色值:
private void ButtonsLeaving_MouseLeave(object sender, MouseEventArgs e) { (sender as Ellipse)?.ClearValue(Ellipse.FillProperty); }
ClearValue 是WPF依赖属性自带的方法,会清除该属性的本地赋值,让属性值回退到之前的有效默认值,不管你之前给单个Ellipse设置的默认色是什么,都能正确恢复。
方案2:更符合WPF设计规范的无后台代码实现
完全不用写后台鼠标事件,直接用XAML样式触发器实现移入变色、移出自动恢复,适配所有不同默认色的Ellipse按钮:
<Style TargetType="Ellipse" x:Key="HoverEllipseButtonStyle"> <!-- 可在这里设置通用默认Fill,也可以单独给每个Ellipse自定义Fill --> <Setter Property="Fill" Value="#FF252424"/> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Fill" Value="IndianRed"/> </Trigger> </Style.Triggers> </Style>
给需要该效果的Ellipse应用样式即可:<Ellipse Style="{StaticResource HoverEllipseButtonStyle}"/>,如果某几个Ellipse需要自定义默认色,直接单独给它加Fill属性即可,移出后会自动回到你单独设置的颜色,不需要额外处理。
内容的提问来源于stack exchange,提问作者Totitoti
相关产品推荐
相关产品推荐

