Затухание анимации в wpf tabcontrol - PullRequest
2 голосов
/ 25 марта 2012

В 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 Ответ

1 голос
/ 25 марта 2012

Вы не можете сделать это из стилей.Вы должны вручную переопределить TabControl, проверить его событие SelectionChanged, запустить анимацию из кода и дождаться, пока его событие Completed изменит selectedIndex.

...