2010-02-16 11 views
7

Después de hacer clic en los botones WPF en nuestra aplicación, brillan en azul, vuelven al color original, vuelven a azul, etc. Esto parece ser un comportamiento predeterminado en Windows Vista/7. No sucede en XP. ¿Algún consejo?Botones brillantes WPF

Respuesta

8

Debe sobrescribir la plantilla del botón predeterminado: http://mark-dot-net.blogspot.com/2007/07/creating-custom-wpf-button-template-in.html debe comenzar.

Específicamente Sección 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> 
+0

¡Gracias! Eso es exactamente lo que necesitaba. – Jason

+0

Me alegro de que funcionó para usted. – Nate

+0

Sus desencadenantes se adaptarían mejor a un estilo que es considerablemente más fácil que usar ControlTemplate – markmnl

1

Necesita anular la ControlTemplate. De lo contrario, está utilizando desencadenantes para establecer los colores en eventos como colocar el mouse sobre él. Si simplemente configura el Background, solo está configurando el fondo predeterminado cuando no hay Trigger s en curso.

Cuestiones relacionadas