2012-03-02 17 views
2

インターネットで素晴らしいガラスボタンのために次のテンプレートが見つかりました。あなたはそれがボタンの背景のプロパティの設定を持っている見ることができるよう 、wpfのボタンテンプレートの背景色を変更します

<Setter TargetName="border" Property="Background" Value="#FF000000" /> 

が、私は他のどの値にブレンドでこれを変更する場合は、ボタンの背景が変更won`t .. 私は変更する必要がありますこのテンプレートを使用しているフォームのすべてのボタンに影響を与えるSetterタグの値... このテンプレートを使用して異なるボタンに異なる背景を与えるようにコードを変更する方法はありますか?あなたがバインディングを使用することができます

<ControlTemplate x:Key="GlassButton" TargetType="{x:Type Button}"> 
     <ControlTemplate.Resources> 
      <Storyboard x:Key="Timeline1"> 
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
               Storyboard.TargetName="glow" 
               Storyboard.TargetProperty="(UIElement.Opacity)"> 
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1" /> 
       </DoubleAnimationUsingKeyFrames> 
      </Storyboard> 
      <Storyboard x:Key="Timeline2"> 
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
               Storyboard.TargetName="glow" 
               Storyboard.TargetProperty="(UIElement.Opacity)"> 
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0" /> 
       </DoubleAnimationUsingKeyFrames> 
      </Storyboard> 
     </ControlTemplate.Resources> 
     <Border BorderBrush="#FFFFFFFF" 
       BorderThickness="0" 
       CornerRadius="4,4,4,4"> 
      <Border x:Name="border" 
        Background="#7F000000" 
        BorderBrush="#FF000000" 
        BorderThickness="1" 
        CornerRadius="4,4,4,4"> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="0.507*" /> 
         <RowDefinition Height="0.493*" /> 
        </Grid.RowDefinitions> 
        <Border x:Name="glow" 
          Grid.RowSpan="2" 
          Width="Auto" 
          HorizontalAlignment="Stretch" 
          CornerRadius="4,4,4,4" 
          Opacity="0"> 
         <Border.Background> 
          <RadialGradientBrush> 
           <RadialGradientBrush.RelativeTransform> 
            <TransformGroup> 
             <ScaleTransform ScaleX="1.702" ScaleY="2.243" /> 
             <SkewTransform AngleX="0" AngleY="0" /> 
             <RotateTransform Angle="0" /> 
             <TranslateTransform X="-0.368" Y="-0.152" /> 
            </TransformGroup> 
           </RadialGradientBrush.RelativeTransform> 
           <GradientStop Offset="0" Color="#B28DBDFF" /> 
           <GradientStop Offset="1" Color="#008DBDFF" /> 
          </RadialGradientBrush> 
         </Border.Background> 
        </Border> 
        <ContentPresenter Grid.RowSpan="2" 
             Width="Auto" 
             HorizontalAlignment="Center" 
             VerticalAlignment="Center" /> 
        <Border x:Name="shine" 
          Width="Auto" 
          Margin="0,0,0,0" 
          HorizontalAlignment="Stretch" 
          CornerRadius="4,4,0,0"> 
         <Border.Background> 
          <LinearGradientBrush StartPoint="0.494,0.028" EndPoint="0.494,0.889"> 
           <GradientStop Offset="0" Color="#99FFFFFF" /> 
           <GradientStop Offset="1" Color="#33FFFFFF" /> 
          </LinearGradientBrush> 
         </Border.Background> 
        </Border> 
       </Grid> 
      </Border> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsPressed" Value="True"> 
       <Setter TargetName="shine" Property="Opacity" Value="0.4" /> 
       <Setter TargetName="border" Property="Background" Value="#FF000000" /> 
       <Setter TargetName="border" Property="BorderBrush" Value="#FF000000" /> 
       <Setter TargetName="glow" Property="Visibility" Value="Hidden" /> 
      </Trigger> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Trigger.EnterActions> 
        <BeginStoryboard Storyboard="{StaticResource Timeline1}" /> 
       </Trigger.EnterActions> 
       <Trigger.ExitActions> 
        <BeginStoryboard x:Name="Timeline2_BeginStoryboard" Storyboard="{StaticResource Timeline2}" /> 
       </Trigger.ExitActions> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

答えて

1

<Setter TargetName="border" Property="Background" 
     Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Background}" /> 

この方法は、あなたが個別に各ボタンの背景を設定することができ、およびセッターが使用する背景には、ボタンのBackgroundプロパティにバインドされます。

<Button Background="Red" Content="First" /> 
<Button Background="Blue" Context="Second" /> 
答えを
+0

こんにちはおかげで... Iamは例外た:{「表現型は、有効なスタイル値ではありません。」} は、私はこれをどのように修正することができますか? – lebhero

+0

@lebhero私の更新された回答を参照してください –

+0

ありがとうございます...私はテンプレートで理解していない何かがあると思う..背景がボタンの背景を設定しますが、私はボタンの背景を変更したい押す前に? テンプレート内で直接背景の値を変更すると、ボタンの色が変更される前に変更され、これが私の必要とするものです...これはどうすればいいですか?(ボタンの面の色を変更する)?? Thankss – lebhero

関連する問題