2009-12-02 27 views
24

Tôi đang tạo một số từ điển tài nguyên wpf với tất cả các kiểu cho một ứng dụng! Tôi có một số ít LinearGradientBrush es, nơi màu được đặt trực tiếp trong tham chiếu L inearGradientBrushGradientStop s. Tuy nhiên, tôi muốn có một bộ được xác định trước của màu sắc mà tôi có thể sử dụng aa tham chiếu cho mỗi GradientStop, do đó thay đổi cách phối màu cho ứng dụng là một vấn đề thay đổi các giá trị của SolidColorBrush es:Sử dụng SolidRolorBrush StaticResource để xác định Gradient Stop Colors

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


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

Với ví dụ mã trên, tôi nhận được lỗi sau:

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

dòng nó đề cập đến là dòng nơi <GradientStop Color="{StaticResource colorbrushMedium}"/> được định nghĩa.

Bất kỳ ý tưởng nào?

Trả lời

29

Ok, tôi thấy vấn đề:

Sử dụng màu và không 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> 

này dường như để giải quyết vấn đề của tôi!

+0

Bạn thậm chí có thể viết được những màu sắc được xác định trong Colours lớp tĩnh thay vì mã hex, ví dụ Xám. – Florian

+4

Điều gì sẽ xảy ra nếu bạn cũng cần sử dụng cùng một màu cho các thuộc tính yêu cầu SolidColorBrush? – redtetrahedron

7

Sử dụng Binding để tham khảo các màu sắc cả trong SolidColorBrush và trong 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> 
Các vấn đề liên quan