Tema Aero in applicazioni WPF

Il layout grafico Aero, utilizzato di default in Vista, e’ reperibile e usabile anche in applicazioni WPF per Windows XP.
Per abilitarlo ci sono diverse strade, alcune a livello di xaml, altre a livello di codice.

Abilitazione via XAML
Come spiegato da Alessadro, basta includere l’assembly PresentationFramework.Aero.dll tra le risorse dell’applicazione e poi aggiungere queste righe all’interno del file App.xaml, per fare in modo che tutta l’applicazione usi il tema Aero.


	
		

		
		

		
		

		
	

Il secondo dizionario che viene usato contiene altri temi aggiuntivi, quindi non e’ indispensabile per abilitare Aero. L’ho messo solo come nota per far vedere come includere e usare stili presi da altri assembly all’interno dello stesso App.xaml.

Il risultato che si ottiene e’ questo, conservando un look’nd feel omogeneo tra Windows XP e Windows Vista, contorno della finesta a parte:
WPF_Aero_XP2

Abilitazione via codice
Se l’abilitazione del tema occorre farla via, basta includere queste righe nell’evento OnStartup dell’applicazione, file App.xaml.cs e sempre dopo aver referenziato PresentationFramework.Aero.dll:

ResourceDictionary aero = new ResourceDictionary();
aero.Source = new Uri("/PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component/themes/aero.normalcolor.xaml", UriKind.RelativeOrAbsolute);
Application.Current.Resources.MergedDictionaries.Add(aero);

ResourceDictionary dict = new ResourceDictionary();
dict.Source = new Uri("/ComNet.Retail.UI.WPF.Touch;component/Themes/GlobalStyles.xaml", UriKind.RelativeOrAbsolute);
Application.Current.Resources.MergedDictionaries.Add(dict);

Stesso discorso fatto sopra per i temi aggiuntivi vale anche per la seconda parte di questo snippet, quella importante e’ solo la prima sezione di codice.

Abilitazione selettiva via XAML
Si puo’ anche fare in modo che solamente una finestra dell’applicazione utilizzi il tema Aero, mentre il resto del programma continui ad utilizzare il suo tema predefinito.


	
		

			

			
				

				
				
			
		
	

Anche in questo esempio, ho aggiunto una parte non funzionale all’impostazione del tema, quella del ResourceDictionary che contiene la dichiarazione del Converter e dello Style. Serve solo per far vedere come mettere tutto assieme all’interno delle Window.Resources.

Abilitazione selettiva via codice
All’interno del code behind della mia Window, UserControl o altro elemento grafico, basta scrivere:

ResourceDictionary aero = new ResourceDictionary();
aero.Source = new Uri("/PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component/themes/aero.normalcolor.xaml", UriKind.RelativeOrAbsolute);
this.Resources.MergedDictionaries.Add(aero);

Io personalmente utilizzo questo codice nel costruttore dell’elemento, dopo la chiamata InizializeComponent(), ma si puo’ usare dove serve, senza problemi, dipende dall’uso che viene fatto degli stili all’interno della window o controllo e se vengono definiti come StaticResource o DynamicResource (rispettivamente prima di InizializeComponent() o un po’ ovunque nell’inizializzazione del controllo).

Precauzioni varie
Se si vogliono definire ulteriori personalizzazioni all’aspetto dei controlli, bisogna utilizzare l’attributo BasedOn nella definizione dello stile, altrimenti si perde l’aspetto Aero. Ad esempio, per definire larghezza e altezza minina di un bottone:



Questo stile potrebbe essere definito in un file WPF separato ed incluso con gli snippet di codice che facevo vedere sopra.

Leave a Reply