Come abbiamo visto nello script #74, per migliorare il supporto dei temi nelle Windows Store e nelle Windows Phone app il framework si è arricchito di una nuova markup extension: ThemeResource. Questa markup extension è largamente usata negli Style e nei Template predefiniti del runtime e le relative risorse sono a disposizione per l'utilizzo nelle nostre applicazioni.
Oltre a quelle predefinite, abbiamo la possibilità di creare nostre risorse da associare a ciascun tema, in modo che il runtime le applichi in presenza quindi del tema scelto dall'utente.
Per questa operazione dobbiamo dichiarare le risorse in ThemeDictionaries di ResourceDictionary, in App o nelle Page in modo analogo a quanto facciamo con le tradizionali risorse:
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <ResourceDictionary.ThemeDictionaries> <ResourceDictionary x:Key="Default"> <SolidColorBrush x:Key="Background" Color="Red"/> <x:String x:Key="BackButtonGlyph"></x:String> </ResourceDictionary> <ResourceDictionary x:Key="Light"> <SolidColorBrush x:Key="Background" Color="Black"/> <x:String x:Key="BackButtonGlyph"></x:String> </ResourceDictionary> <ResourceDictionary x:Key="HighContrastBlack"> <SolidColorBrush x:Key="Background" Color="Green"/> <x:String x:Key="BackButtonGlyph"></x:String> </ResourceDictionary> <ResourceDictionary x:Key="HighContrastWhite"> <SolidColorBrush x:Key="Background" Color="White"/> <x:String x:Key="BackButtonGlyph"></x:String> </ResourceDictionary> </ResourceDictionary.ThemeDictionaries> </ResourceDictionary>
In ThemeDictionaries troviamo tante ResourceDictionary quante sono i temi supportati; in ciascun ResourceDictionary dobbiamo inserire le risorse, con la stessa Key, con il valore che vogliamo usare nel tema corrispondente.
Come possiamo vedere nello snippet, oltre ai colori possiamo inserire qualunque oggetto nelle risorse in modo che temi ad alto contrasto, ad esempio, possano addirittura avere altre icone, forme o dimensioni.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Evitare il flickering dei componenti nel prerender di Blazor 8
Disabilitare automaticamente un workflow di GitHub (parte 2)
Aggiornare a .NET 9 su Azure App Service
Gestire gli accessi con Token su Azure Container Registry
Utilizzare il trigger SQL con le Azure Function
Triggerare una pipeline su un altro repository di Azure DevOps
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Creare una libreria CSS universale: Immagini
Introduzione alle Container Queries
Sostituire la GitHub Action di login su private registry
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API