我对如何解决这个问题感到有些困惑。
我在我的解决方案和数据触发器上有一个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>