WPF触发器没有';行不通
我想在鼠标悬停时更改按钮的背景、边距和前景,但它只更改前景。请帮忙WPF触发器没有';行不通,wpf,Wpf,我想在鼠标悬停时更改按钮的背景、边距和前景,但它只更改前景。请帮忙 <Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/e
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:coupleofbuttons"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button x:Name="ButtonX" Margin="10,10,0,0" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Height="46" Background="Green" BorderThickness="0,0,0,7">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="DarkGoldenrod"/>
<Setter Property="Foreground" Value="Green"/>
<Setter Property="Margin" Value="10,20,0,0"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
</Window>
如果在属性中设置了一个属性,就像您使用
边距
和背景
所做的那样,该属性会覆盖样式所做的任何事情,因此样式触发器无法更改它
在样式的Setters中设置这些属性的默认值,但不在Style.Triggers部分中设置。然后去掉你现在拥有的边距和背景属性
正如克莱门斯在一篇评论中所指出的,这种行为是由规则来解释的。这样更好:通常您希望属性覆盖样式,只有在这种触发情况下,您才会希望样式覆盖任何其他内容
<Button
x:Name="ButtonX"
Content="Button"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="100"
Height="46"
BorderThickness="0,0,0,7"
>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="10,10,0,0" />
<Setter Property="Background" Value="Green" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="DarkGoldenrod"/>
<Setter Property="Foreground" Value="Green"/>
<Setter Property="Margin" Value="10,20,0,0"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
含糊不清的离题咆哮
就我个人而言,作为一个软件用户,我发现当我点击控件时,控件会移动是非常令人沮丧的,这就是当触发器改变边距时所产生的效果。就在昨天,我向一家网站发送了关于这个问题的反馈。我告诉他们,使用他们的网页就像用棍子戳一只愤怒的浣熊
但作为一名开发人员,这是你的职责。老实说,他们的界面比你的更令人震惊。里面满是紫色的漩涡。我不得不问他们,谷歌分析是否跟踪了有多少观众自杀。我怀疑他们会回答。客户服务是一门失传的艺术 如果在属性中设置了属性,就像您使用
边距
和背景
所做的那样,该属性将覆盖样式所做的任何操作,因此样式触发器无法更改它
在样式的Setters中设置这些属性的默认值,但不在Style.Triggers部分中设置。然后去掉你现在拥有的边距和背景属性
正如克莱门斯在一篇评论中所指出的,这种行为是由规则来解释的。这样更好:通常您希望属性覆盖样式,只有在这种触发情况下,您才会希望样式覆盖任何其他内容
<Button
x:Name="ButtonX"
Content="Button"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="100"
Height="46"
BorderThickness="0,0,0,7"
>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="10,10,0,0" />
<Setter Property="Background" Value="Green" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="DarkGoldenrod"/>
<Setter Property="Foreground" Value="Green"/>
<Setter Property="Margin" Value="10,20,0,0"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
含糊不清的离题咆哮
就我个人而言,作为一个软件用户,我发现当我点击控件时,控件会移动是非常令人沮丧的,这就是当触发器改变边距时所产生的效果。就在昨天,我向一家网站发送了关于这个问题的反馈。我告诉他们,使用他们的网页就像用棍子戳一只愤怒的浣熊
但作为一名开发人员,这是你的职责。老实说,他们的界面比你的更令人震惊。里面满是紫色的漩涡。我不得不问他们,谷歌分析是否跟踪了有多少观众自杀。我怀疑他们会回答。客户服务是一门失传的艺术