9

我使用模板化的 RadioButtons 和 Grids 完成了一个简单的 TabControl,当 RadioButton 上的 IsChecked 发生变化时,它们会改变可见性,如下所示:

<Grid Name="TabGrid">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" Orientation="Horizontal">
            <RadioButton x:Name="RadioButton1" Content="Latest" Style="{StaticResource TabRadioButtonStyle}" IsChecked="True" GroupName="G1"/>
            <RadioButton x:Name="RadioButton2" Content="Popular" Style="{StaticResource TabRadioButtonStyle}" IsChecked="False" GroupName="G1" Margin="30,0,0,0" />
        </StackPanel> 

现在,里面的每个网格都定义了 EntranceThemeTransition,如下所示:

        <GridGrid.Row="1" Visibility="{Binding ElementName=RadioButton1, Path=IsChecked, Converter={StaticResource BoolToVisibilityConverter}}">
            <Grid.ChildrenTransitions>
                <TransitionCollection>
                    <EntranceThemeTransition />
                </TransitionCollection>
            </Grid.ChildrenTransitions>

据我了解,EntranceThemeTransition 仅在项目首次显示时显示。每次 Grid 的可见性发生变化时,有没有办法强制 EntranceThemeTransition 重复?

4

1 回答 1

0

这并不能完全回答您的问题,但我认为这将帮助许多人登陆这里:

如果您想为数据绑定列表框中的项目重复入口动画,我发现只有一种方法:

  • 将列表框的 DataContext 设置为 null(这将删除项目)。
  • 将列表框的 DataContext 设置回您的列表/可观察集合(这将重新创建项目并将它们添加到带有动画的列表框)。

通过重置 DataContext 您正在创建新的列表框项,并且它们尚未标记为已进入视图。

关于你的问题;我认为您需要创建一个新版本的网格才能再次播放入口动画。

于 2015-09-24T12:43:25.950 回答