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
Cambiare a runtime la stringa di connessione di Entity Framework Core
Eseguire uno scroll all'interno di una pagina Blazor
Eseguire manualmente una GitHub Action
Taggare le query create con EF Core con informazioni di debug sul codice
Eseguire task temporizzati tramite hosted service in ASP.NET Core
Compilare automaticamente applicazioni .NET 6 con le pipeline di Azure DevOps e GitHub Action
Migliorare l'accessibilità tramite l'attributo aria-live
Creare un'istanza di Azure Service Bus con ARM
Ottimizzare il codice JavaScript con i Shorthand Patterns - terza parte
Creare una Azure Web App tramite ARM
Calcolare automaticamente un numero di versione di un repository in una pipeline di Azure DevOps
Ottimizzare la concorrenza dinamicamente con le Azure Function