2010-02-19 6 views
0

다음과 같이 내 ui에 dockpanel이 있습니다.WPF 테두리 폭 애니메이션

<DockPanel> 
    <Border DockPanel.Dock="Top">Header</Border> 
    <Border DockPanel.Dock="Bottom">My footer</Border> 
    <Border DockPanel.Dock="Left">Menu</Border> 

    <Border>Content</Border> 
</DockPanel> 

왼쪽의 메뉴를 표시하거나 숨기려면 스토리 보드 애니메이션을 사용하고 싶습니다. 로드 할 때 너비를 늘리기 위해 테두리가 있지만 닫거나 다시 열 수있는 방법이 필요합니다. 어딘가에 버튼이 필요하지만, 경계 컨트롤에서 애니메이션을 트리거하기를 원합니다. 이상적으로 저는 Visual Studio에서 Toolbox/Server Explorer와 같은 것을 생각하고있었습니다.

누구나 시작을위한 포인터/예제가 있습니까?

감사

+0

정말 유용한 답변을 수락하거나 받아 들여야합니다 :-) –

답변

3

나는 당신이 무슨 뜻인지 이해가 잘 모르겠지만, 당신이 밖으로 후/그것을 애니메이션을 적용 할 경우, 당신은 아마 그 폭을 업데이트 할? 당신이 등 여러 속성을 변경 복잡한 애니메이션, 다른 타이밍을 수행하는 경우 다음 함께 넣어 훨씬 쉽게

<DataTrigger Binding="{Binding IShouldBeVisible}" Value="True"> 
    <DataTrigger.EnterActions> 
     <BeginStoryboard> 
      <Storyboard AccelerationRatio="0.4" DecelerationRatio="0.4"> 
       <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Width)"> 
        <SplineDoubleKeyFrame KeyTime="00:00:0.13" Value="100"/> 
       </DoubleAnimationUsingKeyFrames> 
      </Storyboard> 
     </BeginStoryboard> 
    </DataTrigger.EnterActions> 
    <DataTrigger.ExitActions> 
     <BeginStoryboard> 
      <Storyboard AccelerationRatio="0.4" DecelerationRatio="0.4"> 
       <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Width)"> 
        <SplineDoubleKeyFrame KeyTime="00:00:0.1" Value="0"/> 
       </DoubleAnimationUsingKeyFrames> 
      </Storyboard> 
     </BeginStoryboard> 
    </DataTrigger.ExitActions> 
</DataTrigger> 

: 당신은 당신이 결합 할 수있는 ViewModel/PresentationModel의 속성이있는 경우 다음과 같은 일을 할 수 있습니다 Blend에서 테스트 프로젝트에서 수행하더라도 결과 StoryBoard를 자르고 붙여 넣기 :-)

+0

예, 변경해야한다고 생각했습니다. 넓이. 방아쇠에 대한 의미를 확인하십시오. 고마워, 나를 위해 좋은 시작 같아. Blend에서 시도하지 않았 으면 좋겠어. 감사. –