在我们的应用程序中单击 WPF 按钮后,它们会发出蓝色光、返回原始颜色、返回蓝色等。这似乎是 Windows Vista/7 上的默认行为。它不会发生在 XP 上。有什么建议吗?
问问题
10282 次
2 回答
9
您需要覆盖默认按钮模板——http: //mark-dot-net.blogspot.com/2007/07/creating-custom-wpf-button-template-in.html应该让你开始。
特别是第 3 节:
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#FF4788c8" />
<Setter Property="Foreground" Value="#FF4788c8" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" >
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
<GradientStop Color="#FFFFD190" Offset="0.35"/>
<GradientStop Color="Orange" Offset="0.95"/>
<GradientStop Color="#FFFFD190" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter TargetName="content" Property="RenderTransform" >
<Setter.Value>
<TranslateTransform Y="1.0" />
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsDefaulted" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="border" Property="Opacity" Value="0.7" />
<Setter Property="Foreground" Value="Gray" />
</Trigger>
</ControlTemplate.Triggers>
于 2010-02-16T20:03:11.897 回答
2
您需要覆盖ControlTemplate
. 否则,它使用触发器来设置事件的颜色,例如将鼠标悬停在它上面。如果您只是设置s Background
,那么您只是在没有Trigger
s 的情况下设置默认背景。
于 2010-02-16T20:05:47.913 回答