动画ItemsControl项目

时间:2014-06-10 13:10:01

标签: wpf xaml animation itemscontrol

我对如何解决这个问题感到有些困惑。

我在我的解决方案和数据触发器上有一个tabcontrol我隐藏了tabcontrol并在其位置显示了一个itemscontrol,每个项目(tab)都是一个矩形块的形状。并且选择(简单的mousedown)一个“瓷砖”' (另一个数据触发器)我隐藏itemscontrol并显示tabcontrol,并将选定的tile作为选定的选项卡。

以上工作正常,没有任何问题。现在我试图看看我是否可以为整个过程制作动画,使其在视觉上看起来很漂亮。我的目标是当itemscontrol变得可见时使所有的tile显得很漂亮,然后在itemscontrol折叠时优雅地淡出。

我的想法是实际上将所有项目的不透明度设置为0以开始,然后运行DoubleAnimation将数据触发器的不透明度设置为1(给出一个很好的淡入效果)。但我不确定如何解决这个问题。

有人可以帮我这个吗?对不起,我没有发布任何xaml,但我努力尝试动画列表框,失败

编辑 - 到目前为止我的努力。理想情况下,我希望它使用ItemsControl而不是列表框,因为我不需要任何交互,如SelectedItem或任何东西  请告诉我,如果我的方法本身是错误的,那么我就不会走错方向。

我从列表框开始,在我的资源中,我得到了以下风格。请忽略我的多触发器,因为我之前有更多条件,但保留了它。

<Style x:Key="CustomStyle" TargetType="{x:Type ListBoxItem}">
            <Setter property="opacity" value="0"/>
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}},Path=Visibility}" Value="true"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard Duration="0:0:1">

                                </ObjectAnimationUsingKeyFrames>-->
                                <DoubleAnimation Duration="0:0:1" Storyboard.TargetProperty="Opacity" To="1"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.EnterActions>
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>

然后是我的列表框样式

<ListBox  Background="Transparent" ItemsSource="{Binding Children}" Visibility="{Binding ShowAnimation,Converter={StaticResource BooleanToVisibilityConverter}}">
<ListBox.Style>
    <Style>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding ShowAnimation}" Value="True">
                                    <Setter Property="ListBox.ItemContainerStyle" Value="{StaticResource CustomStyle}"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
</ListBox.Style>
</ListBox>

0 个答案:

没有答案