【发布时间】:2020-08-27 11:38:40
【问题描述】:
我有一个带有 ControlTemplate 的 WPF 按钮,其中包括 IsPressed 属性上的触发器(如下所示的 sn-p)。该按钮是一种“按住”类型的按钮,因此在按下按钮时,我正在尝试更改其颜色以提供一些视觉反馈。
显示的触发器效果很好。当您单击按钮时,颜色会发生变化,并且在您释放鼠标之前一直保持变化 - 除非鼠标移出按钮但仍被按下时。在这种情况下,颜色会变回默认值,即使按钮仍被按下并且按钮驱动的机制继续运行,直到释放鼠标。
有其他人看到这个问题或知道解决方案吗?这是我第一次使用 WPF 触发器,因此我们将不胜感激。
谢谢大家。
这是我当前应用于按钮的样式(删除了一些不相关的内容):
<Style x:Key="RS_LocalButtonStyle"
TargetType="Button">
<Setter Property="Margin"
Value="0,7,0,0" />
<Setter Property="HorizontalAlignment"
Value="Stretch" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ButtonBase}">
<Border x:Name="border"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<ContentPresenter x:Name="contentPresenter"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}"
ContentStringFormat="{TemplateBinding ContentStringFormat}"
Focusable="False"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsDefaulted"
Value="True">
<Setter Property="BorderBrush"
TargetName="border"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
</Trigger>
<Trigger Property="ToggleButton.IsChecked"
Value="True">
<Setter Property="Background"
TargetName="border"
Value="#FFBCDDEE" />
</Trigger>
<Trigger Property="IsEnabled"
Value="False">
<Setter Property="Background"
TargetName="border"
Value="#FFF4F4F4" />
</Trigger>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background"
TargetName="border"
Value="#FFBEE6FD" />
</Trigger>
<Trigger Property="IsPressed"
Value="True">
<Setter Property="Background"
TargetName="border"
Value="{DynamicResource {x:Static SystemColors.GradientActiveCaptionBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
【问题讨论】:
-
你能提供一个minimal-reproducible-example吗?
-
@Cfun 我添加了其余的样式。它仅应用于标准按钮。我认为现在应该可以重现吗?抱歉,我对此很陌生。
标签: c# wpf button triggers controltemplate