2009-12-02 10 views
24

Tworzę niektóre słowniki zasobów wpf ze wszystkimi stylami dla aplikacji! Mam kilka LinearGradientBrush es, gdzie kolor jest ustawiony bezpośrednio w L inearGradientBrush jako GradientStop s. Jednakże chcę mieć predefiniowany zestaw kolorów, które można używać aa odniesienia dla każdego GradientStop, tak że zmiana schematu kolorów dla aplikacji jest kwestia zmiany Wartości SolidColorBrush ES:Używanie staticResource SolidColorBrush do definiowania gradientowych kolorów zatrzymania

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


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

Z Przykładowy kod powyżej, otrzymuję następujący błąd:

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

linia dotyczy to jest linia, gdzie <GradientStop Color="{StaticResource colorbrushMedium}"/> jest zdefiniowana.

Wszelkie pomysły?

Odpowiedz

29

Ok, znalazłem problem:

Użycie koloru i nie 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> 

To wydaje się rozwiązać mój problem!

+0

Można nawet napisać kolor zdefiniowany w statycznych klasy Kolory zamiast kodu hex, np Szary. – Florian

+4

Co, jeśli musisz użyć tego samego koloru dla właściwości, które wymagają SolidColorBrush? – redtetrahedron

7

Zastosowanie Binding odwołać koloru zarówno w SolidColorBrush aw 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> 
Powiązane problemy