Forzare un theme di WPF

di Cristian Civera, in 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.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese