鼠标向上按钮应显示背景边框
我创建了一个简单的样式
<UserControl.Resources>
<Style TargetType="Button" x:Key="TransparentButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="Transparent">
<ContentPresenter/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
并按下按钮
<Button Height="20" Width="20" Padding="0,0,0,0" DockPanel.Dock="Top" Grid.Row="0" Grid.Column="1" Click="button_click" Style="{StaticResource TransparentButton}"
BorderBrush="Transparent" BorderThickness="0" Background="Transparent">
<Button.Content>
<Image Source="../Resources/Help_icon.png" Stretch="UniformToFill" />
</Button.Content>
</Button>
但是在这种情况下按下按钮时,它不会显示在UI中。用户应该感觉到按下按钮。
谢谢和问候
答案 0 :(得分:11)
我不确定你想要什么,但如果你想在按下按钮时改变颜色边框,你可以像这样修改你的模板:
<Style TargetType="Button" x:Key="TransparentButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border" Background="Transparent" BorderThickness="1" BorderBrush="Black">
<ContentPresenter/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsPressed" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="Transparent" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 1 :(得分:4)
当您重新创建按钮的ControlTemplate时,您将失去Windows按钮的所有默认功能。您需要使用触发器重新创建它们,或者不使用您自己的控制模板。
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter ....behavior you want
</Trigger>
</ControlTemplate.Triggers>
这是一个按钮具有MSDN默认控件模板的链接,您可以将其用作参考,通过定义自己的行为来重新创建一些丢失的行为。
http://msdn.microsoft.com/en-us/library/ms753328%28v=vs.85%29.aspx
答案 2 :(得分:0)
Try this one...
<Style x:Key="PressedButtonEffect" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border" Background="Transparent" BorderThickness="1" BorderBrush="Gray">
<ContentPresenter/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsPressed" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="DarkGray" />
<Setter TargetName="border" Property="BorderThickness" Value="2" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 3 :(得分:0)
有一篇好文章here解释了发生了什么以及如何解决这个问题。基本上MS确实在标准按钮中包含了这个功能,但他们选择的颜色是“鼠标按下”。并且&#39;按下&#39;如此接近,你没有注意到差异。
右键单击设计器中的按钮,然后选择&#34;编辑模板/编辑副本...&#34;然后改变颜色,直到你看到差异。简单!