从 GridView 添加或删除项目时如何创建自己的动画?例如,将颜色从深色变为浅色。
如果项目是一个网格:
<Grid.Transitions>
--> There can be only predefinied *ThemeTransitions?
</Grid.Transitions>
还有其他方法吗?
从 GridView 添加或删除项目时如何创建自己的动画?例如,将颜色从深色变为浅色。
如果项目是一个网格:
<Grid.Transitions>
--> There can be only predefinied *ThemeTransitions?
</Grid.Transitions>
还有其他方法吗?
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
添加到 GridView 的“父”ListView 的行可以通过多种方式提供,但通常绑定到某个东西的 ObservableCollection。
GridView 的列也由 ObservableCollection 管理,因此上下文应该非常相似。
几天前我发表了一篇关于如何管理栏目管理(带动画)的文章。也许可以帮助你。
http://highfieldtales.wordpress.com/2013/08/08/hacking-the-wpf-gridview-adding-the-animation/
更新:请原谅我,但我后来意识到你的意思是 XAML 用于商店应用程序。我的参考是 WPF,而不是。
如果用作 GridView 的 ItemsSource 的集合是 ObservableCollection 并且您的代码在侦听来自该集合的更改怎么办?然后从后面的代码中可以控制动画。
正确,只能有预定义的转换。过渡模型目前尚未公开。