Использование StaticResource SolidColorBrush для определения цветов градиента - PullRequest
27 голосов
/ 02 декабря 2009

Я создаю несколько словарей ресурсов 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}"/>.

Есть идеи?

Ответы [ 2 ]

32 голосов
/ 02 декабря 2009

Хорошо, я нашел проблему:

Использование цвета, а не 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>

Кажется, это решает мою проблему!

9 голосов
/ 15 марта 2016

Используйте 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>
...