アプリケーションのすべてのスタイルでいくつかの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}"/>
が定義されています。
何か案は?
わかりました、私は問題を見つけました:
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>
これは私の問題を解決するようです!
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>