30

アプリケーションのすべてのスタイルを含む wpf リソース ディクショナリを作成しています。私はいくつかのes を持っています。そこでは、色が sとして L リファレンスLinearGradientBrushに直接設定されています。ただし、アプリケーションの配色を変更するには、esの値を変更するだけでよいように、各 の参照として使用できる事前定義された色のセットが必要です。inearGradientBrushGradientStopGradientStopSolidColorBrush

<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}"/>が定義されている行です。

何か案は?

4

2 に答える 2

37

わかりました、私は問題を見つけました:

SolidColorBrush ではなく Color を使用します。

<Color x:Key="colorbrushMedium">#FF5A5A5A</Color>
<Color x:Key="colorbrushDark">#FF222222</Color>
<LinearGradientBrush>
    <GradientStop Color="{StaticResource colorbrushMedium}"/>
    <GradientStop Color="{StaticResource colorbrushDark}" Offset="1"/>
</LinearGradientBrush>

これは私の問題を解決するようです!

于 2009-12-02T10:34:21.837 に答える
15

Bindingの両方で色を参照するために使用します。SolidColorBrushLinearGradientBrush

<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>
于 2016-03-15T17:59:26.870 に答える