我的问题是,在WPF中,每当我尝试使用触发器或动画更改按钮背景的颜色时,默认的鼠标悬停效果(在橙色发光的情况下变为灰色)似乎更重要。
经过广泛的搜索,我对如何消除这种影响一无所知。
发布于 2010-10-04 18:50:44
您需要创建自己的自定义按钮模板,以完全控制所有状态下的外观。这是一个tutorial。
发布于 2010-11-15 15:16:14
这类似于Mark Heath提到的解决方案,但没有那么多代码来创建一个非常基本的按钮,没有内置的鼠标经过动画效果。它保留了以黑色显示按钮边框的简单鼠标悬停效果。
例如,可以将样式插入到Window.Resources或UserControl.Resources部分(如图所示)。
<UserControl.Resources>
<!-- This style is used for buttons, to remove the WPF default 'animated' mouse over effect -->
<Style x:Key="MyButtonStyle" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="1"
Padding="4,2"
BorderBrush="DarkGray"
CornerRadius="3"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="Black" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<!-- usage in xaml -->
<Button Style="{StaticResource MyButtonStyle}">Hello!</Button>
发布于 2014-08-15 03:44:43
如果有人不想覆盖默认控件模板,那么这里就是解决方案。
您可以为可以具有TextBlock的按钮创建DataTemplate,然后您可以在IsMouseOver属性上编写属性触发器来禁用鼠标悬停效果。TextBlock和Button的高度应该相同。
<Button Background="Black" Margin="0" Padding="0" BorderThickness="0" Cursor="Hand" Height="20">
<Button.ContentTemplate>
<DataTemplate>
<TextBlock Text="GO" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" TextDecorations="Underline" Margin="0" Padding="0" Height="20">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property ="IsMouseOver" Value="True">
<Setter Property= "Background" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</Button.ContentTemplate>
</Button>
https://stackoverflow.com/questions/3854317
复制相似问题