2011-07-24 14 views
0

我制作了自己的按钮模板,该模板应该使用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

回答