2009-12-02 5 views
24

Je crée des dictionnaires de ressources wpf avec tous les styles pour une application! J'ai quelques LinearGradientBrush es, où la couleur est définie directement dans la référence L inearGradientBrush comme GradientStop s. Cependant, je veux avoir un ensemble prédéfini de couleurs que je peux utiliser aa référence pour chaque GradientStop, de sorte que la modification du schéma de couleurs pour l'application est une question de changer les valeurs des SolidColorBrush es:Utilisation d'une StaticResource SolidColorBrush pour définir les couleurs d'arrêt du dégradé

<SolidColorBrush Color="#5A5A5A" x:Key="colorbrushMedium" /> 
<SolidColorBrush Color="#222222" x:Key="colorbrushDark" /> 


<LinearGradientBrush> 
    <GradientStop Color="{StaticResource colorbrushMedium}"/> 
    <GradientStop Color="{StaticResource colorbrushDark}" Offset="1"/> 
</LinearGradientBrush> 

Avec l'exemple de code ci-dessus, j'obtiens l'erreur suivante:

Cannot convert the value in attribute 'Color' to object of type 'System.Windows.Media.Color'. '#5A5A5A' is not a valid value for property 'Color'. 

la ligne il se réfère est la ligne où <GradientStop Color="{StaticResource colorbrushMedium}"/> est définie.

Des idées?

Répondre

29

Ok, j'ai trouvé le problème:

Utilisation de la couleur et non SolidColorBrush ..

<Color x:Key="colorbrushMedium">#FF5A5A5A</Color> 
<Color x:Key="colorbrushDark">#FF222222</Color> 
<LinearGradientBrush> 
    <GradientStop Color="{StaticResource colorbrushMedium}"/> 
    <GradientStop Color="{StaticResource colorbrushDark}" Offset="1"/> 
</LinearGradientBrush> 

Cela semble résoudre mon problème!

+0

Vous pouvez même écrire la couleur définie dans la classe statique Couleurs au lieu du code hexadécimal, par exemple Gris. – Florian

+4

Que faire si vous devez également utiliser la même couleur pour les propriétés nécessitant un SolidColorBrush? – redtetrahedron

7

Utilisez Binding pour faire référence à la couleur aussi bien dans SolidColorBrush et LinearGradientBrush:

<SolidColorBrush x:Key="stop1" Color="#FF5A5A5A"/> 
<SolidColorBrush x:Key="stop2" Color="#FF222222"/> 

<LinearGradientBrush x:Key="gradient"> 
    <GradientStop Color="{Binding Source={StaticResource stop1},Path=Color}" Offset="0"/> 
    <GradientStop Color="{Binding Source={StaticResource stop2},Path=Color}" Offset="1"/> 
</LinearGradientBrush> 
Questions connexes