Comment permettre facilement aux utilisateurs de mettre à jour les styles utilisés comme éléments dans XAML (UWP)

Ceci est pour un Windows 10 UWP. Je dois autoriser les utilisateurs à mettre à jour les valeurs des styles associés aux éléments utilisés dans l’application (c’est-à-dire permettre aux utilisateurs de modifier la taille de la police de divers blocs de texte, des panneaux de stack de couleur de fond, etc.).

J’ai actuellement tous mes styles dans un fichier séparé.

Mon App.xaml est comme ci-dessous:

          

Mon Styles.xaml (partiel) est comme ci-dessous:

                   

Je fais référence à ces styles sur les contrôles de l’application en utilisant comme ceci:

  

J’ai créé une page de parameters (settings.xaml) qui contient des zones de texte permettant aux utilisateurs de mettre à jour divers parameters de style.

Mais je ne suis pas sûr de savoir comment associer ces parameters aux parameters des différents styles du fichier styles.xaml afin que les styles soient mis à jour et que les commandes faisant référence aux styles soient mises à jour lorsque l’utilisateur modifie la valeur.

   

Est-ce que quelqu’un pourrait me diriger dans la bonne direction? J’essaye de faire ceci avec le minimum (ou aucun code derrière) comme possible.

Malheureusement, ce type de style défini par l’utilisateur n’est pas facilement disponible dans UWP. Vous pouvez toutefois implémenter une sorte de solution de style utilisant la liaison de données.

La première étape consiste à créer une classe telle que CustomUISettings qui implémente INotifyPropertyChanged et possède des propriétés telles que HeaderFontSize , etc.

Maintenant, sur l’application, créez une instance de cette classe et ajoutez-la en tant que ressource d’application:

 Application.Current.Resources["CustomUISettings"] = new CustomUISettings(); 

Vous pouvez maintenant lier les propriétés de cette classe n’importe où dans votre code:

  

Vous devez utiliser l’extension de balisage {Binding} classique, car {x:Bind} ne prend pas en charge le paramètre Source .

Pour modifier les parameters de l’interface utilisateur, vous pouvez simplement récupérer l’instance n’importe où et définir les propriétés à votre guise:

 var customUISettings = (CustomUISettings)Application.Current.Resources["CustomUISettings"]; customUISettings.HeaderFontSize = 50; 

Vous devez vous assurer que toutes les propriétés de la classe CustomUISettings déclenchent l’événement PropertyChanged . Vous pouvez voir comment implémenter l’interface INotifyPropertyChanged par exemple ici .