Je crée des styles d'application dans mon application et je souhaite définir des couleurs explicites à utiliser par clé. Dans WPF XAML, je créerais un SolidColorBrush pour définir les valeurs RGB/ARGB. Dans Xamarin XAML, dois-je convertir cela en hexadécimal pour définir la même couleur en XAML? L'extrait ci-dessous provient de WPF XAML.
<SolidColorBrush
x:Key="blueColor">
<SolidColorBrush.Color>
<Color
A="255"
R="50"
G="150"
B="225" />
</SolidColorBrush.Color>
</SolidColorBrush>
Xamarin.Forms
fournit une classe Color
multiplate-forme.
Utilisation de Xaml:
Les couleurs peuvent également être facilement référencées dans Xaml en utilisant les noms de couleurs définis ou les représentations Hex indiquées ici :
<Label Text="Sea color" BackgroundColor="Aqua" />
<Label Text="RGB" BackgroundColor="#00FF00" />
<Label Text="Alpha plus RGB" BackgroundColor="#CC00FF00" />
<Label Text="Tiny RGB" BackgroundColor="#0F0" />
<Label Text="Tiny Alpha plus RGB" BackgroundColor="#C0F0" />
La classe Color fournit un certain nombre de méthodes pour créer une instance de couleur.
Selon Xamarin WorkingWithColors sample, vous pouvez faire quelque chose comme ceci:
<Color
x:Key="BlueColor">
<x:Arguments>
<x:Double>.4</x:Double> <!-- R/255 -->
<x:Double>.62</x:Double> <!-- G/255 -->
<x:Double>.95</x:Double> <!-- B/255 -->
<x:Double>.2</x:Double> <!-- A: 0.0-1.0 -->
</x:Arguments>
</Color>
Leur exemple ne montre pas l'utilisation du canal alpha, mais je viens de le tester et depuis le 30 mai 2017, il semble bien fonctionner.
Cependant, sachez que cela ne semble pas être documenté. Le guide Xamarin.Forms "Couleurs" , qui va avec le code ci-dessus, ne le mentionne pas non plus, cela peut donc changer sans préavis.
En réponse directe à la question, vous ne pouvez pas spécifier un x: FactoryMethod = "FromRgb" dans xaml pour spécifier les couleurs en RVB à partir de ressources. Pour contourner ce problème, vous devez spécifier les couleurs à l'aide de l'approche "FromHex" et en effectuant la conversion appropriée, par exemple.
<Color x:Key="somethingGreenish" x:FactoryMethod="FromHex">
<x:Arguments>
<x:String>#97cd75</x:String>
</x:Arguments>
</Color>