发光的WPF按钮

时间:2010-02-16 20:01:03

标签: wpf button styles glow

点击我们应用程序中的WPF按钮后,它们会变为蓝色,恢复原始颜色,返回蓝色等。这似乎是Windows Vista / 7上的默认行为。它不会发生在XP上。有什么建议吗?

2 个答案:

答案 0 :(得分:9)

您需要覆盖默认按钮模板 - http://mark-dot-net.blogspot.com/2007/07/creating-custom-wpf-button-template-in.html应该启动。

具体第3节:

<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter TargetName="border" Property="BorderBrush" Value="#FF4788c8" />
        <Setter Property="Foreground" Value="#FF4788c8" />
    </Trigger>
    <Trigger Property="IsPressed" Value="True">                   
       <Setter Property="Background" >
           <Setter.Value>
               <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
                   <GradientStop Color="#FFFFD190" Offset="0.35"/>
                   <GradientStop Color="Orange" Offset="0.95"/>
                   <GradientStop Color="#FFFFD190" Offset="1"/>
               </LinearGradientBrush>
            </Setter.Value>
        </Setter>
        <Setter TargetName="content" Property="RenderTransform" >
            <Setter.Value>
                <TranslateTransform Y="1.0" />
            </Setter.Value>
        </Setter>
    </Trigger>
    <Trigger Property="IsDefaulted" Value="True">
       <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
    </Trigger>
    <Trigger Property="IsFocused" Value="True">
       <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
    </Trigger>
    <Trigger Property="IsEnabled" Value="False">
       <Setter TargetName="border" Property="Opacity" Value="0.7" />
       <Setter Property="Foreground" Value="Gray" />
   </Trigger>
</ControlTemplate.Triggers>

答案 1 :(得分:2)

您需要覆盖ControlTemplate。否则,它使用触发器设置事件的颜色,例如将鼠标悬停在它上面。如果您只是设置Background,则只会在没有Trigger的情况下设置默认背景。