我制作了自己的按钮模板,该模板应该使用6种不同的颜色 现在我为其中一种颜色制作了1种样式。但风格非常大。 我想要做的是重复使用这种风格也为其他颜色 (样式都是相同的颜色除外)Silverlight 4/XAML:如何制作Simmilar按钮样式模板而无需粘贴
现在我想知道。有没有一种方法可以创建这6种单独的样式,而无需复制/粘贴6次,而是将这些颜色绑定在一起?
这里是澄清XAML代码:
<UserControl.Resources>
<LinearGradientBrush x:Key="WitNormalBorder" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="#FFFAFAFF" Offset="0.33"/>
<GradientStop Color="#FFD4D4D7" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WitNormalFill" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="#FFD8D8DC" Offset="0"/>
<GradientStop Color="White" Offset="0.66"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WitOverBorder" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="White" Offset="0.33"/>
<GradientStop Color="#FFDCDCDE" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WitOverFill" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="#FFE6E6E9" Offset="0"/>
<GradientStop Color="White" Offset="0.66"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WitDownBorder" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="#FFF0F0FF" Offset="0.33"/>
<GradientStop Color="#FFD2D2D3" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WitDownFill" EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="#FFDADADC" Offset="0"/>
<GradientStop Color="#FFFAFAFD" Offset="0.66"/>
</LinearGradientBrush>
<Style x:Key="KleurButtonWit" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Border" BorderThickness="0" Padding="5" CornerRadius="12" Background="{StaticResource WitNormalBorder}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="Border" Storyboard.TargetProperty="(UIElement.Background)">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource WitOverBorder}">
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="Background" Storyboard.TargetProperty="(UIElement.Background)">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource WitOverFill}">
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Border" Storyboard.TargetProperty="(UIElement.Background)">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource WitDownBorder}">
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="Background" Storyboard.TargetProperty="(UIElement.Background)">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource WitDownFill}">
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused">
</VisualState>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Background" BorderThickness="0" CornerRadius="8" Background="{StaticResource WitNormalFill}">
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
,你可以看到,如果我有这6次复制将是一个很大的代码...
感谢, Matthy