我为按钮定义了一种特殊的样式,用于应用程序中的所有按钮。按钮的背景定义为具有两种颜色的垂直LinearGradientBrush。如果按下按钮,则通过触发器交换两种颜色。
现在我需要一些按钮使用不同颜色的渐变,其他一切都相同。如何重用已定义的样式呢?
答案 0 :(得分:4)
您可以在基座DynamicResource
中将您的画笔引用为Style
,并为衍生的Style
基本风格 将DynamicResource
用于backgroundBrush和pressedBackgroundBrush
<Style TargetType="Button"
x:Key="ButtonBaseStyle">
<Style.Resources>
<LinearGradientBrush x:Key="backgroundBrush" StartPoint="0.5, 0" EndPoint="0.5, 1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="Green" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="pressedBackgroundBrush" StartPoint="0.5, 0" EndPoint="0.5, 1">
<GradientStop Color="Green" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush>
</Style.Resources>
<Setter Property="Background" Value="{DynamicResource backgroundBrush}"/>
<!-- Additional Setters.. -->
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background"
Value="{DynamicResource pressedBackgroundBrush}"/>
</Trigger>
</Style.Triggers>
</Style>
基于样式 定义新画笔但使用相同的Style
<Style TargetType="Button"
BasedOn="{StaticResource ButtonBaseStyle}"
x:Key="AnotherButtonStyle">
<Style.Resources>
<LinearGradientBrush x:Key="backgroundBrush" StartPoint="0.5, 0" EndPoint="0.5, 1">
<GradientStop Color="Orange" Offset="0"/>
<GradientStop Color="Blue" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="pressedBackgroundBrush" StartPoint="0.5, 0" EndPoint="0.5, 1">
<GradientStop Color="Blue" Offset="0"/>
<GradientStop Color="Orange" Offset="1"/>
</LinearGradientBrush>
</Style.Resources>
</Style>