2013-03-08 3 views
0

버튼의 마우스 오버 이벤트에 대해 여러 애니메이션을 수행하는 컨트롤을 만들려고합니다. 첫 번째 기능은 버튼이 패딩 = 2를 가져와 전체 열을 차지해야한다는 것입니다. 나는 그것을 할 수 없다. mouseover에서 버튼의 너비를 줄이려고하면 할 수 있지만 너비를 늘리려고하면 버튼이 확장되지만 확장 된 부분은 보이지 않습니다. 같은 것을 구현하는 방법?WPF를 사용한 동적 버튼 너비

제어 템플릿에서 아래 코드를 사용하고 있습니다. 변경을 제안하십시오 : - 사전에

<!--Create a control template for button--> 
<ControlTemplate x:Key="buttonAnimate" TargetType="Button"> 
    <Grid Name="myGrid"> 
     <Button Name="myButton" Background="{TemplateBinding Background }" Width="{TemplateBinding Width}"> 
     </Button> 
    <Border Name="MyBorder" BorderBrush="Orange" BorderThickness="3" CornerRadius="2"></Border> 
    </Grid> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background" Value="DarkRed" TargetName="MyBorder"/> 
      <Setter Property="Width" Value="200" TargetName="myButton"/> 
      <Setter Property="Cursor" Value="Hand" TargetName="myGrid"/> 
      <Setter Property="Width" Value="300" TargetName="myButton"/> 
      <Setter Property="Width" Value="300" TargetName="MyBorder"/> 
      <Setter Property="Padding" Value="2" TargetName="myButton"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

감사합니다.

+0

이렇게하려면 스토리 보드를 사용해야합니다. http://msdn.microsoft.com/en-us/library/ms752312.aspx를 참조하십시오. – failedprogramming

답변

0

버튼이 그리드에 의해 잘리고 있습니다. false로 ClipsToBounds에게 속성을 설정하기 위해 시도하거나이 시도 :

public class MyButton : Button 
{ 
    protected override Geometry GetLayoutClip(Size layoutSlotSize) 
    { 
     return ClipToBounds ? base.GetLayoutClip(layoutSlotSize) : null; 
    } 
} 

는 도움이되기를 바랍니다.