【发布时间】:2015-09-06 15:10:41
【问题描述】:
我在做一个wpf程序,我做了一个自定义样式按钮:
<Style x:Key="ButtonMio" TargetType="{x:Type Button}">
<Setter Property="Padding" Value="1"/>
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Name="border" Background="{TemplateBinding Background}">
<ContentPresenter Name="content" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FF3EC8C6" />
<Setter Property="Foreground" Value="Transparent"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
嗯,按钮有一个图像作为内容(所以它比真正的按钮小)。由于背景是透明的,我在鼠标悬停触发器中写了这个:
<Setter Property="Background" Value="#FF3EC8C6" />
而且它有效。但仅在点击之前。 Afterclick没有更多的背景。即使单击其他按钮并使第一个按钮失去焦点(我认为),背景仍然不会出现。 我厌倦了更改“IsPressed”和“IsFocused”,但在第一种情况下,背景不会在单击后消失,而在第二种情况下,我没有使用 tab 来聚焦元素。
真的对不起我的英语。希望一切都清楚。谢谢!
【问题讨论】: