clés de ressources peut être quelque chose, vous pouvez utiliser un Color
comme une clé et valeur à la en même temps:
public static class MyColors
{
static MyColors()
{
App.Current.Resources.Add(MyHighlightColorKey, MyHighlightColorKey);
}
public static readonly Color MyHighlightColorKey = Color.FromArgb(255, 0, 88, 0);
}
Le constructeur statique ajoute la couleur en utilisant lui-même comme une clé pour les ressources d'application.
(SystemColors
utilise SystemResourceKeys
en interne pour chaque couleur ou d'une brosse définie, vous avez pas accès à cette classe mais (ce qui est logique), vous pourriez aussi sous-classe ResourceKey
si vous prenez problème avec l'aide de la valeur de sa propre clé)
vous pouvez l'utiliser comme ceci:
<TextBox>
<TextBox.Background>
<SolidColorBrush Color="{DynamicResource {x:Static local:MyColors.MyHighlightColorKey}}"/>
</TextBox.Background>
</TextBox>
Et si vous avez besoin de passer outre la clé au niveau local, vous pouvez le faire ainsi:
<Window.Resources>
<Color x:Key="{x:Static local:MyColors.MyHighlightColorKey}" A="255" R="255" G="0" B="0"/>
</Window.Resources>
Edit: Si vous avez beaucoup de couleurs, des pinceaux et ainsi de suite, vous pouvez également utiliser la réflexion pour faire la ressource enregistrement dans le constructeur (i utilisé les champs, si vous utilisez des propriétés pour exposer les données dont vous avez besoin pour ajuster cela légèrement):
static MyColors()
{
FieldInfo[] keyFieldInfoArray = typeof(MyColors).GetFields();
foreach (var keyFieldInfo in keyFieldInfoArray)
{
object value = keyFieldInfo.GetValue(null);
App.Current.Resources.Add(value, value);
}
}
C'est exactement ce que je me demandais. Merci beaucoup H.B.! – michael
Heureux qui a aidé :) –
Je suis un peu confus sur la partie où vous ajoutez la ressource en utilisant App.current.resources.add(). Qu'est-ce que cela fait réellement? Il semble que cette étape est inutile lors de l'accès à la couleur en utilisant {x: Static local: MyColors.MyHighlightColorKey} – redshift5