wpf xaml resources colors brushes

wpf - Usar StaticResource SolidColorBrush para definir los colores de parada de degradado



xaml resources (2)

Bien, encontré el problema:

Usando Color y no 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>

¡Esto parece resolver mi problema!

¡Estoy creando algunos diccionarios de recursos wpf con todos los estilos para una aplicación! Tengo algunos LinearGradientBrush es, donde el color se establece directamente en la referencia L inearGradientBrush como GradientStop s. Sin embargo, quiero tener un conjunto predefinido de colores que pueda usar una referencia para cada GradientStop , de modo que cambiar el esquema de color de la aplicación es una cuestión de cambiar los valores de SolidColorBrush es:

<SolidColorBrush Color="#5A5A5A" x:Key="colorbrushMedium" /> <SolidColorBrush Color="#222222" x:Key="colorbrushDark" /> <LinearGradientBrush> <GradientStop Color="{StaticResource colorbrushMedium}"/> <GradientStop Color="{StaticResource colorbrushDark}" Offset="1"/> </LinearGradientBrush>

Con el ejemplo de código anterior, aparece el siguiente error:

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 línea a la que se refiere es la línea en la que se define <GradientStop Color="{StaticResource colorbrushMedium}"/> .

¿Algunas ideas?


Use Binding para hacer referencia al color tanto en SolidColorBrush como en 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>