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
Le novità di Angular: i miglioramenti alla CLI
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Generare velocemente pagine CRUD in Blazor con QuickGrid
Gestire i dati con Azure Cosmos DB Data Explorer
Routing statico e PreRendering in una Blazor Web App
Generare la software bill of material (SBOM) in GitHub
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Gestire domini wildcard in Azure Container Apps
Path addizionali per gli asset in ASP.NET Core MVC
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Ottimizzare le pull con Artifact Cache di Azure Container Registry