Как я могу анимировать Y-шкалу в пользовательском TabControl? - PullRequest
1 голос
/ 13 августа 2011

Я изменил и упростил TabControl для моей работы.Теперь я буду анимировать Чанг между двумя TabItems - Y-Scale уже не как hartcut, а с мягким слайдом - знаете, как я могу это сделать?1005 *

Спасибо за вашу помощь.

Я расширил свой стиль с помощью VisualStateGroup вашего примера, но он не работает.Может быть, что-то отличается между ListBox и TabControl?

        <Style x:Key="TabControlStyle1" TargetType="{x:Type TabControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabControl}">
                    <Grid x:Name="grid" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*"/>
                            <RowDefinition Height="0"/>
                        </Grid.RowDefinitions>
                        <StackPanel IsItemsHost="True"/>
                        <Grid x:Name="ContentPanel" Grid.Column="1">

                        <ContentPresenter x:Name="Compact" Opacity="1" ContentSource="SelectedContent" VerticalAlignment="Top">
                            <ContentPresenter.LayoutTransform>
                                <ScaleTransform ScaleY="1" />
                            </ContentPresenter.LayoutTransform>
                        </ContentPresenter>

                        <ContentPresenter x:Name="Details" Opacity="0" ContentSource="SelectedContent" VerticalAlignment="Top">
                            <ContentPresenter.LayoutTransform>
                                <ScaleTransform ScaleY="0" />
                            </ContentPresenter.LayoutTransform>
                        </ContentPresenter>

                        <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup Name="SelectionStates">
                        <VisualState Name="Unselected">
                            <Storyboard SpeedRatio="2">
                                <DoubleAnimation To="1" Storyboard.TargetName="Compact" Storyboard.TargetProperty="Opacity" />
                                <DoubleAnimation To="1" Storyboard.TargetName="Compact" Storyboard.TargetProperty="LayoutTransform.(ScaleTransform.ScaleY)" />
                                <DoubleAnimation To="0" Storyboard.TargetName="Details" Storyboard.TargetProperty="Opacity" />
                                <DoubleAnimation To="0" Storyboard.TargetName="Details" Storyboard.TargetProperty="LayoutTransform.(ScaleTransform.ScaleY)" />
                            </Storyboard>
                        </VisualState>

                        <VisualState Name="Selected">
                            <Storyboard SpeedRatio="2">
                                <DoubleAnimation To="0" Storyboard.TargetName="Compact" Storyboard.TargetProperty="Opacity" />
                                <DoubleAnimation To="0" Storyboard.TargetName="Compact" Storyboard.TargetProperty="LayoutTransform.(ScaleTransform.ScaleY)" />
                                <DoubleAnimation To="1" Storyboard.TargetName="Details" Storyboard.TargetProperty="Opacity" />
                                <DoubleAnimation To="1" Storyboard.TargetName="Details" Storyboard.TargetProperty="LayoutTransform.(ScaleTransform.ScaleY)" />
                            </Storyboard>
                        </VisualState>
                    </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                        </Grid>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
...