Использование StaticResource SolidColorBrush для определения цветов градиента Stop
Я создаю некоторые словари ресурса wpf со всеми стилями для приложения! У меня есть несколько LinearGradientBrush
es, где цвет устанавливается непосредственно в ссылке L inearGradientBrush
как GradientStop
s. Тем не менее, я хочу иметь предопределенный набор цветов, которые я могу использовать ссылку для каждого GradientStop
, так что изменение цветовой схемы для приложения связано с изменением значений 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>
С приведенным выше примером кода я получаю следующую ошибку:
Cannot convert the value in attribute 'Color' to object of type 'System.Windows.Media.Color'. '#5A5A5A' is not a valid value for property 'Color'.
Линией, на которую он ссылается, является строка, в которой определяется <GradientStop Color="{StaticResource colorbrushMedium}"/>
.
Любые идеи?
Ответы
Ответ 1
Хорошо, я нашел проблему:
Использование цвета, а не 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>
Это, похоже, решает мою проблему!
Ответ 2
Используйте Binding
для указания цвета как в SolidColorBrush
, так и в 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>