这个触发器有什么问题?我在这里找到了它:http://www.wpf-tutorial.com/styles/trigger-datatrigger-event-trigger/并且我在SO
上看到了类似的设置 <Button x:Name="ColorPickerButton" Background="{Binding SelectedColor}">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
我试图打破我的意大利面条XAML并使其更具可读性。这是我的旧实现,它确实有效。我不喜欢它,因为它覆盖了按钮内容并覆盖了边框,这似乎是不必要的。还有它的庞大
<Button x:Name="ColorPickerButton" Background="{Binding SelectedColor}">
<Button.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="Bd"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="true">
<GridViewRowPresenter/>
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="BorderBrush" Value="{StaticResource ColorPickerButton.MouseOver.Border}"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Resources>
</Button>
答案 0 :(得分:0)
您的触发器不起作用,因为按钮的默认模板有自己的触发器,可在设置 IsMouseOver 属性时更改根边框的背景画笔。这意味着:只要鼠标位于按钮顶部,按钮控件的背景 - 属性将被其模板忽略。
检查按钮默认样式的最简单方法是:右键单击visual studio wpf designer中的按钮。点击&#39; 修改模板&#39; - &GT; &#39; 编辑副本&#39;并选择一个位置。 将在指定位置创建默认样式的副本。你会看到这样的触发器:
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
</Trigger>
在设计师创建的样式定义之上,它还创建了样式中使用的画笔:
<SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
<SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
您可以更改这些画笔或上面设置器的 Value 属性,以便在鼠标结束时更改背景。 或者您像在旧实现中一样创建自己的模板。