2010-08-25 17 views
17

C'è un modo per impostare gli stili globali per la mia applicazione WPF?WPF - Stile globale?

Quello che spero di fare è applicare uno stile a tutti i miei pulsanti che hanno anche un figlio Image.

risposta

23

Bene, un po '- è un approccio generale che puoi fare - inserisci il seguente elemento in App.xaml - tutti i pulsanti cambieranno (tranne quelli a cui applichi uno stile, manualmente).

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="LightPink"/> <!-- You should notice that one... --> 
</Style> 

Tuttavia, se si vuole colpire solo i pulsanti con immagini - si deve ereditare da pulsante ogni volta che fai e poi applicare uno stile come questo:

public class CustomImageButton:Button{} 
<Style TargetType="{x:Type local:CustomImageButton}"> 
    <Setter Property="Background" Value="LimeGreen"/> 
</Style> 
<local:CustomImageButton Content="ClickMe"/> 

È una grana molto grossa stile globale - e devi seguire la convenzione per farlo funzionare.

Un'alternativa è usare Temi - leggi di più su quello here.

+2

Sfortunatamente il collegamento a Themes è morto. [Qui] (http://blogs.msdn.com/b/wpfsdk/archive/2007/07/31/using-themes-with-custom-controls.aspx) è un collegamento a un articolo da MSDN sull'utilizzo di temi che potrebbe essere simile –

5

Si può fare stili impliciti in WPF che vengono applicati per tipo

per esempio

<Style TargetType="Button"> 

verrà applicata a tutti i pulsanti nell'ambito di quello stile (Se lo stile è in App. XAML si applica a tutti i pulsanti, se è inferiore nella catena si applica a tutti i pulsanti sottostanti)

Se si desidera applicarlo solo a determinati tipi di pulsanti (ad esempio i pulsanti immagine) creare un tipo che deriva da pulsante (chiamarlo ImageButton) e quindi creare come tyle mirato a quel tipo.

+0

OK ... questo tipo di opere. Uno dei miei pulsanti sembra rispettare questo cambiamento, ma gli altri no. Funzionano tutti se io do uno stile 'x: Key' e poi lo chiamo esplicitamente da ogni pulsante usando' Style = "{StaticResource DisabledButton}" '. In qualsiasi modo posso evitare di dover aggiungere un riferimento esplicito a ciascun pulsante? –

+0

Assicurarsi che il dizionario delle risorse in cui è definito questo stile sia compreso nell'ambito di tutti i pulsanti a cui è necessario applicare lo stile. L'inserimento di questo stile in App.xaml sarà visibile a tutti i pulsanti nell'app. Lo spostamento verso il basso limiterà la sua visibilità. –

2

Inserisci lo stile in un tag ResourceDictionary all'interno di App.xaml e verrà applicato all'intera app.

Problemi correlati