这是一个非常烦人的工件,我注意到 WPF 并且我很好奇我可能做错了什么,因为我在 WPF XAML 中执行看似简单的代码:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ExampleShapes.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="400" Height="400">
<Grid x:Name="LayoutRoot">
<Button Margin="50,50,50,50" Content="I pulse when clicked Why?">
<Button.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FF0C0B0B" Offset="1"/>
<GradientStop Color="#FFBF5656"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</Grid>
似乎 .NET 中有一些默认值,我不知道我不想要的 MouseOver 和 Click 事件。我不介意当鼠标悬停时它会将渐变的颜色更改为默认值,但是当我删除它时它会变回来。然而,即使在为“CLICK”事件(不在示例中)应用底层 C# 代码之前,它也会假设在我指定的渐变和默认值之间出现“脉冲”行为。对于简单的颜色也是如此。是什么赋予了?
有关更多信息,我正在使用 Visual Studio 2010 和 Expression Blend 3 的 Windows 7 64 位盒子进行设计,使用 .NET 4.0 for VS2010 不确定 EB3,因为它是一个较旧的副本,他们都这样做。是否有一种简单的方法可以更改默认行为,还是必须为按钮设置新的用户模板?
非常感谢任何帮助,谢谢!
最佳答案
它似乎与 Button 的 Focused 样式有关。我猜默认的焦点样式在正常和鼠标悬停背景之间交替,这会导致“脉冲”行为。
单击按钮将其设置为焦点,但您也可以通过简单地切换到按钮来实现相同的效果。
编辑
再深入研究一下,它似乎是任何具有输入焦点的元素的 Aero 主题的默认设置。您可以设置按钮的Focusable="False"
,但是你不能点击按钮或点击它(尽管仍然可以点击它),而且我个人讨厌我无法使用键盘导航的应用程序。
为了避免点击时闪烁,您可以在点击事件结束时将焦点设置到另一个控件,但是当您点击按钮时仍然会出现效果。
关于wpf - 在 WPF 渐变按钮中,点击后默认颜色和新渐变之间会出现脉冲 - 如何停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8434258/