2012-03-25 4 views
2

tabcontrol에서 단계가 간단하기 때문에 페이드 인에는 아무런 문제가 없습니다. 우리는 사용자 정의 컨트롤에 트리거를 넣을 수 있으며, 애니메이션이 보일 때마다 즉시 진행됩니다. 그러나 문제는 페이드 아웃하고 싶을 때 컨트롤이 숨겨져 애니메이션을 완성 할 수 없다는 것입니다. wpf tabcontrol에서 애니메이션 페이드 아웃

는 여기에 내가 달성하고자하는 예입니다 : http://www.yoyonetwork.info/YoYoTabTestTestPage.html

을 그리고 여기에 코드입니다 : 사용자 컨트롤에서

<TabControl IsSynchronizedWithCurrentItem="True" VerticalAlignment="Bottom" Name="TabControl1"> 
     <TabItem Width="70" Name="TabItem1"> 
      <Grid> 
       <my:UserControl1 x:Name="UserControl1"/> <!-- my is the clr-namespace for usercontrols --> 
      </Grid> 
     </TabItem> 
     <TabItem Width="100" Name="TabItem2"> 
      <Grid>      
       <my:UserControl2 x:Name="UserControl2"/> 
      </Grid> 
     </TabItem> 
    </TabControl> 

:

<Grid.Style> 
     <Style TargetType="{x:Type Grid}"> 
      <Style.Triggers> 
       <Trigger Property="IsVisible" Value="True"> 
        <Trigger.EnterActions> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.5"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </Trigger.EnterActions> 
        <Trigger.ExitActions> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:0.5"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </Trigger.ExitActions> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Style> 
+0

이제 다른 모든 항목에도 문제가 있음을 발견했습니다. 이전 항목은 새 항목이 페이드 인으로 애니메이션 될 때 페이드 아웃되지 않습니다. 예는 각 요소에 대한 키보드 포커스의 애니메이션입니다. 이 주제에 대한 도움을 주시면 감사하겠습니다. 같은 – lkn2993

답변

1

당신은 스타일에서 그렇게 할 수 없습니다. TabControl을 수동으로 재정의하고, SelectionChanged 이벤트를 확인하고, 코드에서 애니메이션을 실행하고 Completed 이벤트가 selectedIndex를 변경할 때까지 기다려야합니다.

+0

뭔가' '? 그리고 페이드 애니메이션을 내부에 작성하고 usercontrolname을 대상으로합니까? – lkn2993

+0

아니요, tabControl에 인덱스 변경을위한 변경 또는 미리보기 이벤트가 없으므로 더 이상 맞춤 tabControl과 비슷합니다. –

+0

사용자 지정 tabcontrol에 대한 특정 가이드를 제공하십시오. 컨트롤 템플릿이나 사용자 정의 이벤트 또는 비슷한 것을 만들어야한다는 것을 의미합니까? 실제로 나는 커스텀 이벤트를 작성하는 방법을 모른다. – lkn2993

관련 문제