WPF应用程序上的闪烁按钮

我的WPF应用程序有一个我建立在混合上的样式管理器。

我的问题是:我有一个偶尔闪烁的登录按钮,我无法弄清楚如何删除此行为。

这是我的登录框的样式代码:

                                      

这是我的窗口代码:

                

我正在谈论的Button被称为“LoginBtn”,它的风格也是如此。

如何删除闪烁行为? 提前致谢。

简单的解决方案:将按钮的“可聚焦”设置为False。

闪烁是由于WPF用于按钮的默认样式。 更具体地说,这是由按钮控件模板上的触发器引起的。 要删除它,请进入混合,右键单击按钮并选择“编辑模板” – >“编辑副本”。 单击内容呈现器的子元素(默认情况下,这是名为“Chrome”的控件)。 然后,在触发器选项卡中,通过按“ – trigger”激活RenderDefaulted。 该触发器将使按钮不闪烁。 如果您只想要XAML,那么它将被windows.resource包装……

            

然后,无论你在哪里按,都应用这种风格……

  

更新:多年来默认按钮样式已更改。 这个想法是一样的,使用Blend for Visual Studio来编辑你想要改变的元素的模板。 对于此按钮,只需简单地删除IsDefaulted触发器。 这是一个更新的代码段。

            

删除闪烁的一种稍微不那么突兀的方法是ButtonBase设置一个新的ControlTemplate删除违规绑定。

我从Button默认Style中通过StyleSnooper获取了它,并将其修改/简化为ButtonBase的Style,它只是提供了一个新的ControlTemplate *。 为此,请向Presentation.Aero添加程序集引用,并在ResourceDictionary中引入Microsoft.Windows.Themes名称空间。

在这里,我通过将RenderDefaulted硬编码为false,专门删除了受影响的Button在其IsDefault属性上“闪烁”的能力; 您可能还想要替换RenderMouseOver TemplateBinding。

   

然后将此样式用作Button的BasedOn:

  

(*)是的,我们应该真的有能力使用BasedOn用于ControlTemplates ……

自从我的第一个答案在将图像附加到按钮时遇到了这个问题,我想通过设置图像和按钮来拉伸并使用边框上的尺寸来解决问题。

示例代码..