按钮的自动悬停颜色基于其背景颜色

时间:2013-11-09 05:27:44

标签: c# wpf button styles

我已经google了很多,但我没有发现这种情况。

我有几个不同Button颜色的扁平Background,但悬停颜色对所有颜色都相同!我希望每个Button根据其背景有自己的悬停颜色,例如稍微轻一些。

我尝试制作自定义样式并减少Opacity IsMouseOver触发器中的BackColor,但这不是我想要的,因为它也会影响按钮的内容,而不仅仅是背景颜色!< / p>

Win32 C#应用程序具有Flat Appearance属性,可以自动执行该操作。当您为{{1}}选择颜色并将按钮设置为Flat时,它会处理所有状态颜色(悬停颜色,禁用颜色......),但是我不知道如何在WPF中执行此操作

提前谢谢

2 个答案:

答案 0 :(得分:3)

the hover color is the same for all of them!

这可能是因为在Button的风格中,当BackgroundIsMouseOver时,您有一次 True次刷。

because it also affects the content of the button and not only the background color

这可能是因为当您动画的面板(可能是Border)也是内容控件的父级(例如ContentPresenterContentControl)时,{{1此内容控件也会受到影响。

要解决这些问题,您只需要在与内容控件相同的级别创建一些可视元素(例如OpaciyRectangles),并根据激活的触发器为它们设置动画。< / p>

这是一个简单的例子。

Borders

以下是风格的外观。

enter image description here

希望这有帮助! :)

答案 1 :(得分:0)

检查出来:

http://learnwpf.com/post/2006/03/06/How-do-I-change-an-items-appearance-on-mouseover-in-WPF.aspx

对于Background,您只需设置“Background”属性,而不是设置“BitmapEffect”属性。

希望这有帮助

此致