2010-02-16 11 views
7

Dopo aver fatto clic sui pulsanti WPF nella nostra app, si illuminano di blu, di nuovo sul colore originale, di nuovo su blu, ecc. Questo sembra essere il comportamento predefinito su Windows Vista/7. Non succede su XP. Qualche consiglio?Tasti WPF incandescente

risposta

8

È necessario eseguire l'override del modello di pulsante predefinito: http://mark-dot-net.blogspot.com/2007/07/creating-custom-wpf-button-template-in.html dovrebbe essere avviato.

In particolare Sezione 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

Grazie! Questo è esattamente ciò di cui avevo bisogno. – Jason

+0

Felice che abbia funzionato per te. – Nate

+0

I trigger saranno più adatti in uno stile che è notevolmente più semplice rispetto all'utilizzo di un ControlTemplate – markmnl

1

è necessario sostituire il ControlTemplate. Altrimenti utilizza i trigger per impostare i colori su eventi come passare il mouse sopra di esso. Se si imposta semplicemente lo Background, si sta impostando lo sfondo predefinito solo quando non è attiva la funzione Trigger.