wpf - 在 WPF 渐变按钮中,点击后默认颜色和新渐变之间会出现脉冲 - 如何停止

标签 wpf xaml

这是一个非常烦人的工件,我注意到 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/

相关文章:

c# - 将资源分配给 CustomMessageBox.Content 时出现 ArgumentException

c# - WPF:如何自定义通用自定义窗口?

c# - ScrollViewer.ChangeView 处于事件状态时触摸屏幕会破坏应用程序 UWP

.net - WinRT 动画不显示中间值

c# - 使用 WPF 比使用 Windows 窗体更好吗?

wpf - 依赖属性继承

c# - 样式仅适用于两个元素

c# - 将触发器值绑定(bind)到属性

C#/WPF : KeyBinding not triggering Command

WPF SelectedItem 在 MVVM 中不起作用