Wpf 在鼠标上更改按钮颜色-XAML
我试图创建一个按钮,将是一个特定的颜色(说红色)。鼠标悬停时,按钮颜色变为其他颜色(如黑色) 以下是我尝试过的:Wpf 在鼠标上更改按钮颜色-XAML,wpf,xaml,Wpf,Xaml,我试图创建一个按钮,将是一个特定的颜色(说红色)。鼠标悬停时,按钮颜色变为其他颜色(如黑色) 以下是我尝试过的: <Style x:Key="CategoryButton" TargetType="Button"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Butt
<Style x:Key="CategoryButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
我把它用作:
<Button x:Name="btnCat1" Click="btnCat1_Click" Background="#FFFF1D1D" Style="{StaticResource CategoryButton}">
Hello ...
</Button>
你好
问题是当我说
Background=“#FFFF1D1D”
时,触发器颜色不会对按钮进行任何更改。这是因为您在按钮声明中指定了优先于样式触发器的Background
(换句话说,是一个局部值)。WPF的属性优先级在msdn中描述
此问题的相关属性页面的简短摘录:
最高优先级列在第一位3.本地值。
6.样式触发器。
8.风格设定者 解决方案是删除局部值,并改为使用样式进行设置
<Button x:Name="btnCat1"
Click="btnCat1_Click"
Style="{StaticResource CategoryButton}">
Hello ...
</Button>
<Style x:Key="CategoryButton" TargetType="Button">
<!-- Set background property here -->
<Setter Property="Background" Value="#FFFF1D1D" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
你好
如果不希望为所有CategoryButton设置背景,也可以继承样式
<Style x:Key="RedCategoryButton"
BasedOn="{StaticResource CategoryButton}"
TargetType="{x:Type Button}">
<Setter Property="Background" Value="#FFFF1D1D" />
</Style>
您可以使用下面显示的
XAML
中的WPF
按钮样式的扩展示例(放在WindowsResourceDictionary
文件中):
0
2.
请注意与
和
希望这会有所帮助。问候,
<Style TargetType="Button" x:Key="Button_Command">
<Setter Property="Foreground" Value="#a0a0a0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="ButtonBackground" BorderBrush="#909090">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Border.BorderThickness>0</Border.BorderThickness>
<Border.CornerRadius>2</Border.CornerRadius>
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#e0e0e0" Offset="0" />
<GradientStop Color="#808080" Offset="1" />
</LinearGradientBrush>
</Border.Background>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ButtonBackground" Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1" >
<GradientStop Color="#f0f0f0" Offset="0" />
<GradientStop Color="#c0c0c0" Offset="0.81" />
<GradientStop Color="#d50101" Offset="0.81" />
<GradientStop Color="#f50101" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="ButtonBackground" Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1" >
<GradientStop Color="#f0f0f0" Offset="0" />
<GradientStop Color="#c0c0c0" Offset="0.75" />
<GradientStop Color="#d50101" Offset="0.75" />
<GradientStop Color="#f50101" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>