在wpf tabcontrol中淡出动画

时间:2012-03-25 08:33:26

标签: .net wpf animation tabcontrol

在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>

1 个答案:

答案 0 :(得分:1)

你不能从风格中做到这一点。您必须手动重新定义TabControl,检查其SelectionChanged事件,从代码运行动画并等待其Completed事件更改selectedIndex。