我想让我的按钮更平坦,所以我创造了两种风格; ToggleButton
的第一个来自ToolBar.ToggleButtonStyleKey
,第二个来自Button
的{{1}}。
效果很好 - 按钮现在像工具栏一样扁平。我想要的第二件事是当用户将光标悬停在控件上时,ToolBar.ButtonStyleKey
属性是透明的。因此,为了实现这一点,我定义了一个简单的触发器,将Background
设置为Background
Transparent
事件。它适用于IsMouseOver
,但同样的触发器不适用于ToggleButton
(背景根本没有受到影响)。
有谁知道为什么此触发器适用于Button
,并且不适用于ToggleButton
?我确实期望同样的行为,因为这两种风格来自同一个家庭。
以下是完整的代码。
Button
答案 0 :(得分:1)
我看了一下使用Snoop(一个非常方便的程序来检查WPF),看起来你用作基础的模板ToolBar.ButtonStyleKey
有一个选择一个实体{{1}的触发器} Brush
中Border
元素的背景(在Button
为真的情况下)。
您的本地样式触发器已成功将IsMouseOver
元素的背景设置为透明(或者更确切地说,保持透明),但Button
背景不受影响,因此您仍会看到突出显示行为。
边框背景:
按钮背景:
我认为你必须定义一个Border
来获取你想要的按钮,我从Kaxaml中包含的ControlTemplate
个样本中获取了这个(一个不错的XAML编辑器) 。它是ToolBar
基本按钮样式的合理传真,删除了一些位,它可能会按照您的需要运行,或者您可能需要根据您所需的行为进行调整。
我已将Toolbar
触发器留在原位,您可能希望将其删除,或添加其他触发器。
IsPressed
答案 1 :(得分:0)
我看到 FlatToggleButton 和 FlatButton 样式已经背景为透明
<Setter Property="Background" Value="Transparent"/>
当触发器在 IsMouseOver 上触发并再次将背景设置为透明时,您将看不到任何差异
所以你需要做的就是这些选择之一: