【问题标题】:Prevent buttons from blinking in WPF防止按钮在 WPF 中闪烁
【发布时间】:2015-09-29 12:30:49
【问题描述】:

我创建了一个 WPF 应用程序。这必须有一个红色的主题。所以我将每种颜色都设置为红色,但问题是窗口打开时窗口内的所有按钮都开始闪烁。有趣的是,它们是同时开始的,但过了一段时间,它们开始分道扬镳。当表单失去焦点时,它们都会停止闪烁。当一个按钮被点击时,只有那个会一直闪烁。但是当“非按钮”控件获得焦点时,它们都会再次开始闪烁。


我发现它可能需要对 Focusable 属性做一些事情,但改变它并不会改变任何东西。我还找到了一种覆盖默认样式的方法,但这并不能解决问题。 Source

这是我的 XAML 代码:

<Grid x:Name="gServerSettings">
    <Label x:Name="lTitle" Content="Server Settings" HorizontalAlignment="Center" Margin="182,0,0,166" VerticalAlignment="Center" Width="118" Foreground="#FFFF9999" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="16" FontWeight="Bold" Height="34"/>
    <TextBox x:Name="tServer" Margin="72,39,10,0" TextWrapping="Wrap" Background="{x:Null}" Foreground="#FFFF9999" BorderBrush="#FFFF9999" SelectionBrush="#FFFF9999" BorderThickness="1" VerticalContentAlignment="Center" Height="24" VerticalAlignment="Top" TabIndex="0"/>
    <Label x:Name="lServer" Content="Server" HorizontalAlignment="Left" Margin="10,39,0,0" VerticalAlignment="Top" Width="62" Foreground="#FFFF9999" Height="24" VerticalContentAlignment="Center"/>
    <TextBox x:Name="tDatabase" Margin="72,68,10,0" TextWrapping="Wrap" Background="{x:Null}" Foreground="#FFFF9999" BorderBrush="#FFFF9999" SelectionBrush="#FFFF9999" BorderThickness="1" VerticalContentAlignment="Center" Height="24" VerticalAlignment="Top" TabIndex="1"/>
    <Label x:Name="lDatabase" Content="Database" HorizontalAlignment="Left" Margin="10,68,0,0" VerticalAlignment="Top" Width="62" Foreground="#FFFF9999" VerticalContentAlignment="Center" Height="24"/>
    <TextBox x:Name="tUsername" Margin="72,97,10,0" TextWrapping="Wrap" Background="{x:Null}" Foreground="#FFFF9999" BorderBrush="#FFFF9999" SelectionBrush="#FFFF9999" BorderThickness="1" VerticalContentAlignment="Center" Height="24" VerticalAlignment="Top" TabIndex="2"/>
    <Label x:Name="lUsername" Content="Username" HorizontalAlignment="Left" Margin="10,97,0,0" VerticalAlignment="Top" Width="62" Foreground="#FFFF9999" VerticalContentAlignment="Center" Height="24"/>
    <Label x:Name="lPassword" Content="Password" HorizontalAlignment="Left" Margin="10,126,0,0" VerticalAlignment="Top" Width="62" Foreground="#FFFF9999" VerticalContentAlignment="Center" Height="24"/>
    <PasswordBox x:Name="tPassword" Margin="72,126,10,0" Background="{x:Null}" Foreground="#FFFF9999" BorderBrush="#FFFF9999" SelectionBrush="#FFFF9999" BorderThickness="1" VerticalContentAlignment="Center" Height="24" VerticalAlignment="Top" TabIndex="3"/>
    <Button x:Name="bOK" Content="OK" HorizontalAlignment="Left" Margin="215,168,0,0" VerticalAlignment="Top" Width="75" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="#FFFF9999" BorderThickness="1" IsDefault="True" TabIndex="6"/>
    <Button x:Name="bCancel" Content="Cancel" HorizontalAlignment="Left" Margin="135,168,0,0" VerticalAlignment="Top" Width="75" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="#FFFF9999" BorderThickness="1" IsDefault="True" TabIndex="5"/>
    <Button x:Name="bTestConnection" Content="Test Connection" HorizontalAlignment="Left" Margin="10,168,0,0" VerticalAlignment="Top" Width="120" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="#FFFF9999" BorderThickness="1" IsDefault="True" TabIndex="4" IsHitTestVisible="False"/>
</Grid>

我还没有以编程方式做任何事情,所以我的 .CS 文件是空的。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 他们在没有用户交互的情况下开始闪烁?还是仅在它们被点击后?
  • 它们在没有任何交互的情况下开始闪烁。当窗口或“非按钮”控件具有焦点时,它们都开始闪烁。在问题中查看我的编辑...

标签: c# wpf windows xaml button


【解决方案1】:

您必须基本上重新实现按钮样式并删除该故事板。您可以使用 Expression Blend 转储默认按钮样式并根据自己的喜好对其进行修改。真的没有其他简单的方法可以禁用该情节提要。

【讨论】:

    猜你喜欢
    • 2014-04-29
    • 2013-08-04
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多