2017-08-03 2 views
1

Dans mon application Xamarin Forms, j'ai plusieurs styles, y compris les couleurs.Définir la valeur de couleur dynamiquement dans le style App.xaml

App.xaml:

<prism:PrismApplication.Resources> 
<ResourceDictionary> 
<Color x:Key="primary_colour">#000a3d</Color> 
... 

qui j'utilise sur d'autres pages XAML:

<ContentPage Title="Menu" BackgroundColor="{StaticResource primary_colour}"> 

Ma question est, comment puis-je changer la valeur de couleur (# 000a3d) dans l'App .xaml dynamiquement (ce sera différent en fonction du client connecté)? Puis-je lier cette valeur à partir du fichier App.xaml.cs?

Répondre

2

utilisation DynamicResource, de Xamarin documentaion il dit:

L'extension de balisage DynamicResource est similaire à l'extension de balisage StaticResource en ce qu'aussi bien utiliser une clé de dictionnaire pour chercher une valeur d'un ResourceDictionary. Toutefois, pendant que la ressource statique effectue une recherche de dictionnaire unique, DynamicResource maintient un lien vers la clé de dictionnaire. Par conséquent, si l'entrée de dictionnaire associée à la clé est remplacée, la modification est appliquée à l'élément visuel. Ce permet de modifier le style d'exécution dans une application.

Par conséquent, votre page sera:

<ContentPage Title="Menu" BackgroundColor="{DynamicResource primary_colour}"> 

et votre code pour changer la couleur serait:

Application.Current.Resources["primary_colour"] = Color.Green; 
+0

parfait! Je vous remercie. ça fonctionne bien. – 82skynet