在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 :(得分:1)
你不能从风格中做到这一点。您必须手动重新定义TabControl,检查其SelectionChanged事件,从代码运行动画并等待其Completed事件更改selectedIndex。