2015-01-09 10 views
1

저는 WPF 및 XAML에 새로운 것이므로 사용자 지정 단추 스타일을 만들려고합니다.XAML에서 테두리 두께 변경

<Style x:Key="RoundButtonTemplate" TargetType="Button"> 
    <Setter Property="Background" Value="LightBlue"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border x:Name="Test" CornerRadius="5" Background="{TemplateBinding Background}" 
          BorderThickness="1" BorderBrush="Blue"> 
        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"> 
        </ContentPresenter> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

그리고 버튼을 떠오르게 litte 애니메이션 :

<Style x:Key="Animation" TargetType="Button" BasedOn="{StaticResource RoundButtonTemplate}"> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Trigger.EnterActions> 
       <BeginStoryboard> 
        <Storyboard> 
         <ThicknessAnimation 
          Storyboard.TargetProperty="BorderThickness" 
          Duration="0:0:0.400" 
          From="1, 1, 1, 1" 
          To="3, 3, 3, 3"/> 
         <DoubleAnimation 
          Storyboard.TargetProperty="Height" 
          Duration="0:0:0.300" 
          From="22" 
          To="25"/> 
         <DoubleAnimation 
          Storyboard.TargetProperty="Width" 
          Duration="0:0:0.300" 
          From="75" 
          To="78"/> 
        </Storyboard> 
       </BeginStoryboard> 
      </Trigger.EnterActions> 
     </Trigger> 
    </Style> 

모두가 ThicknessAnimation 제외하고 잘 작동

는 이미 버튼 템플릿을 가지고있다. 어떻게 작동할까요?

+0

당신이 ThicknessAnimation – grabthefish

답변

1

ControlTemplate에서 BorderThickness="1"BorderThickness="{TemplateBinding BorderThickness}"으로 바꿉니다. 귀하의 Style 애니메이션 BorderThicknessControlTemplate 안에 사용되지 않습니다. Border은 고정 값을 사용합니다.

<Style x:Key="RoundButtonTemplate" TargetType="Button"> 
    <Setter Property="Background" Value="LightBlue"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="Button"> 
      <Border 
       x:Name="Test" 
       CornerRadius="5" 
       Background="{TemplateBinding Background}" 
       BorderThickness="{TemplateBinding BorderThickness}" 
       BorderBrush="Blue"> 
       <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Border> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

또한 Background와 같은 기본 값으로 Setter을 추가해야합니다. BorderBrush을 사용하여 동일한 작업을 수행 할 수도 있습니다. 그것은 Template

+0

에'FillBehavior = "HoldEnd을"'추가 시도가 대단히 감사합니다 나중에 변경하지 않고 컨트롤의 BorderBrush에 영향을 미칠 수 있습니다, 지금은 작동한다! :) – Marlon