Condividi tramite


Tema in C#

Tutte le piattaforme supportate da .NET MAUI forniscono supporto per le modalità chiaro e scuro. È essenziale considerare questo aspetto nelle progettazioni di applicazioni per offrire l'esperienza migliore per l'utente finale. Il pacchetto di markup C# consente di definire i valori delle proprietà che verranno scambiati in base al tema corrente dei sistemi (vedere la documentazione Microsoft).

Esistono due modi per definire i valori del tema dell'app:

1. In uno specifico BindableObject

Quando si compila un'interfaccia utente di un'applicazione con C# è possibile definire i valori per la modalità chiara e scura con il AppThemeBinding metodo di estensione.

Nell'esempio seguente viene illustrato come creare un Label oggetto con quanto segue:

  1. Impostare la Text proprietà per visualizzare "Modalità luce" quando il sistema è in modalità chiara e "Modalità scura" quando l'applicazione è in modalità scura.
  2. Impostare la TextColor proprietà su Colors.Black quando il sistema è in modalità chiara e Colors.White quando l'applicazione è in modalità scura.
new Label()
    .AppThemeBinding(Label.TextProperty, "Light Mode", "Dark Mode")
    .AppThemeColorBinding(Label.TextColorProperty, Colors.Black, Colors.White);

2. Su un Style

In genere è consigliabile creare un oggetto Style che può essere applicato a più istanze di un controllo e quindi semplificare il codice necessario per compilare l'interfaccia utente di un'applicazione. A questo scopo sono AppThemeBinding disponibili metodi nella Style<T> classe .

Nell'esempio seguente viene illustrato come creare un oggetto per un StyleLabel con lo stesso comportamento dell'esempio precedente:

  1. Impostare la Text proprietà per visualizzare "Modalità luce" quando il sistema è in modalità chiara e "Modalità scura" quando l'applicazione è in modalità scura.
  2. Impostare la TextColor proprietà su Colors.Black quando il sistema è in modalità chiara e Colors.White quando l'applicazione è in modalità scura.
var labelStyle = new Style<Label>()
    .AddAppThemeBinding(Label.TextProperty, "Light Mode", "Dark Mode")
    .AddAppThemeBinding(Label.TextColorProperty, Colors.Black, Colors.White);

new Label
{
    Style = labelStyle
};