1

从 GridView 添加或删除项目时如何创建自己的动画?例如,将颜色从深色变为浅色。
如果项目是一个网格:

<Grid.Transitions>
        --> There can be only predefinied *ThemeTransitions?       
 </Grid.Transitions>

还有其他方法吗?

4

4 回答 4

1

Tim 是正确的,此时转换是预定义的。但是,您应该能够使用 Storyboard 来实现您的场景。可能有几种方法可以做到这一点,例如重新模板化 GridViewItem 并添加新的“加载”/“卸载”视觉状态。这是通过在 ItemTemplate 中放置 Storyboard 来实现您的场景的简单方法:

MainPage.xaml:

    <GridView x:Name="MyGV">
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Loaded="Grid_Loaded" x:Name="TemplateRoot" Opacity="0" Background="White">
                    <Grid.Resources>
                        <Storyboard x:Key="LoadedStoryboard">
                            <DoubleAnimation Storyboard.TargetName="TemplateRoot"
                                             Storyboard.TargetProperty="Opacity"
                                             BeginTime="0:0:1"
                                             Duration="0:0:5"
                                             To="1" />
                        </Storyboard>
                    </Grid.Resources>
                    <TextBlock Text="{Binding}" FontSize="24" Foreground="Black" Margin="40" />
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

MainPage.xaml.cs:

    private void Grid_Loaded(object sender, RoutedEventArgs e)
    {
        Storyboard sb = ((Grid)sender).Resources["LoadedStoryboard"] as Storyboard;
        sb.Begin();
    }

示例源代码托管在这里: https ://github.com/finnigantime/Samples/tree/master/examples/Win8Xaml/GridViewItemLoadedUnloadedAnimations

于 2013-08-10T20:37:44.333 回答
0

添加到 GridView 的“父”ListView 的行可以通过多种方式提供,但通常绑定到某个东西的 ObservableCollection。

GridView 的列也由 ObservableCollection 管理,因此上下文应该非常相似。

几天前我发表了一篇关于如何管理栏目管理(带动画)的文章。也许可以帮助你。

http://highfieldtales.wordpress.com/2013/08/08/hacking-the-wpf-gridview-adding-the-animation/

更新:请原谅我,但我后来意识到你的意思是 XAML 用于商店应用程序。我的参考是 WPF,而不是。

于 2013-08-10T13:45:44.797 回答
0

如果用作 GridView 的 ItemsSource 的集合是 ObservableCollection 并且您的代码在侦听来自该集合的更改怎么办?然后从后面的代码中可以控制动画。

于 2013-08-09T22:48:09.107 回答
0

正确,只能有预定义的转换。过渡模型目前尚未公开。

于 2013-08-09T23:52:55.637 回答