这是一个非常烦人的工件,我注意到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的Windows 7 64位框和使用.NET 4.0 for VS2010的Expression Blend 3进行设计,因为它是较旧的副本而且它们都是这样做的。有没有简单的方法来更改默认行为,还是我必须为按钮设置新的用户模板?
非常感谢任何帮助!
答案 0 :(得分:6)
它似乎与Button的Focused风格有关。我猜测默认聚焦样式在正常背景和鼠标悬停背景之间交替,这会导致“脉冲”行为。
单击该按钮可将其设置为焦点,但您也可以通过简单地选中按钮来实现相同的效果。
修改强>
进一步研究这个问题似乎是任何具有输入焦点的元素的Aero主题的默认设置。您可以设置按钮的Focusable="False"
,但是您不能选中该按钮或按Enter键(仍然可以点击它),我个人讨厌无法用键盘导航的应用程序。 / p>
为避免单击时闪烁,您可以在单击事件结束时将焦点设置为另一个控件,但是当您选中该按钮时仍会出现效果。