Forzare un theme di WPF

Me lo segno qui perché è un piccolo trucchetto, ma potrebbe essere utile a chi usa WPF.

Nello sviluppo di applicazioni o di controlli può risultare utile vedere come l'aspetto di essi cambino in funzione del theme. Per la rete si trova qualche tip, ma sono finte soluzioni che caricano manualmente il ResourceDictionary a livello di Application e non funziona con i propri controlli.

Questo snippet, da usare solo a scopo di sviluppo, interferisce sulla effettiva scelta del theme da utilizzare:

public App()
{
    //ForceTheme("Luna", "NormalColor");
    //ForceTheme("Luna", "Homestead");
    //ForceTheme("Luna", "Metallic");
    //ForceTheme("Aero", "NormalColor");
    //ForceTheme("Generic", "");
}

private static void ForceTheme(string themeName, string themeColor)
{
    // To force a particular style
    Type t = Type.GetType("MS.Win32.UxThemeWrapper, PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
    FieldInfo themeNameField = t.GetField("_themeName", BindingFlags.NonPublic | BindingFlags.Static);
    themeNameField.SetValue(null, themeName);
    FieldInfo themeColorField = t.GetField("_themeColor", BindingFlags.NonPublic | BindingFlags.Static);
    themeColorField.SetValue(null, themeColor);
}

Basta chiamare il metodo ForceTheme nel costruttore della propria applicazione di test.

Nella stessa categoria

Commenti

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - Ricciolo.NET - Il blog di Cristian "Ricciolo" Civera

TagCloud
BLOG INFO
  • Post: 173
  • Commenti: 74
  • TrackBacks: 37
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA