2009-12-02 11 views
24

Ich erstelle einige WPF-Ressourcenwörterbücher mit allen Stilen für eine Anwendung! Ich habe ein paar LinearGradientBrush es, wo die Farbe direkt in der L inearGradientBrush Referenz als GradientStop s gesetzt wird. Allerdings möchte ich einen vordefinierten Satz von Farben haben, die ich aa Referenz für jeden GradientStop verwenden können, so dass das Farbschema für die Anwendung zu ändern ist eine Frage der die Werte der SolidColorBrush es zu ändern:Verwenden einer StaticResource SolidColorBrush zum Definieren der Farbverlaufsstoppfarben

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


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

Mit das Codebeispiel oben, erhalte ich folgende Fehlermeldung:

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

die Linie es bezieht, ist die Linie, wo <GradientStop Color="{StaticResource colorbrushMedium}"/> definiert ist.

Irgendwelche Ideen?

Antwort

29

Ok, fand ich das Problem:

Mit Farbe und nicht 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> 

Das scheint mein Problem zu lösen!

+0

Sie können sogar die Farbe in statischen Klasse Farben anstelle der Hex-Code definiert schreiben, z.B. Grau. – Florian

+4

Was ist, wenn Sie für Eigenschaften, für die SolidColorBrush erforderlich ist, auch dieselbe Farbe verwenden müssen? – redtetrahedron

7

Verwenden Binding die Farbe sowohl in SolidColorBrush und in LinearGradientBrush zu verweisen:

<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>