La dark mode è una feature molto richiesta, ma essendo stata messa a disposizione solo nell'ultimo anno, il lavoro del team di Xamarin è stato quello di facilitare l'implementazione nelle applicazioni esistenti. Dalla versione 4.6.0.967 (e con supporto minimo ad iOS 13/Android 10) è possibile stabilire lo stile di un oggetto attraverso la property AppThemeBinding.
<Style TargetType="ContentPage" ApplyToDerivedTypes="True"> <Setter Property="BackgroundColor" Value="{AppThemeBinding Dark={StaticResource BackgroundColor_Dark}, Light={StaticResource BackgroundColor_Light}}"/> </Style>
E' stata inoltre aggiornata la modalità di setting del tema, passando da AppThemeColor ad UserAppTheme:
Application.Current.UserAppTheme = OSAppTheme.Dark; Application.Current.UserAppTheme = OSAppTheme.Light;
Eventualmente è possibile non selezionare nessun tema, lasciando al sistema operativo decidere quale adottare:
Application.Current.UserAppTheme = OSAppTheme.Unspecified;
Tramite il metodo RequestThemeChanged possiamo capire quando, ad esempio, l'utente ha deciso di specificarne uno alternativo:
Application.Current.RequestedThemeChanged += (s, a) => { //... };
Per poter utilizzare questa funzionalità, considerando che è ancora in preview, dobbiamo abilitare l'apposita feature flag all'avvio dell'app di Xamarin Forms:
Forms.SetFlags("AppTheme_Experimental");
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Disabilitare automaticamente un workflow di GitHub (parte 2)
Cambiare la chiave di partizionamento di Azure Cosmos DB
.NET Conference Italia 2024
Filtering sulle colonne in una QuickGrid di Blazor
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Introduzione ai web component HTML
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Cancellare una run di un workflow di GitHub
Gestione degli stili CSS con le regole @layer
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Creare un webhook in Azure DevOps