如何制作动画 ListView?
How to make an animated ListView?
我意识到故事板只能与 silverlight Wp 8.1 应用程序一起使用。那么非银光呢?我想在页面转换后制作平滑出现的列表视图元素的动画。我怎样才能做到?我检查了 VisualStateGroup,但要制作这样的动画,我应该在后面制作代码。是否可以仅通过XAML制作?
如果您想使用 XAML
,您可以使用内置的过渡,您可以从已经预定义的过渡中进行选择。一个缺点是您无法通过这种方式创建自己的过渡。
要更改项目转换,请更改 ListView
上的 ItemContainerTransitions
属性:
<ListView x:Name="MyListView">
<ListView.ItemContainerTransitions>
<TransitionCollection>
<!--<ContentThemeTransition HorizontalOffset="0"/>-->
<!--<EntranceThemeTransition />-->
<!-- <AddDeleteThemeTransition /> -->
<!-- <RepositionThemeTransition/> -->
<!-- <ReorderThemeTransition /> -->
<!-- <PopupThemeTransition/> -->
<!-- <EdgeUIThemeTransition Edge="Top"/> -->
</TransitionCollection>
</ListView.ItemContainerTransitions>
</ListView>
您可以根据需要组合它们。只需取消注释上述任何代码并使用最适合您的代码即可。
您可以在扩展 ListView
并覆盖 GetContainerForItemOverride
或 PrepareContainerForItemOverride
方法时创建自定义项目动画。例如,如果您想要将 Storyboard
定义为 StaticResource
,则可以使用 XAML。这是一个例子:
public class MyListView : ListView
{
protected override DependencyObject GetContainerForItemOverride()
{
var container = base.GetContainerForItemOverride();
var da = new DoubleAnimation();
// init da...
var sb = new Storyboard();
// initi sb with container
sb.Begin();
return container;
}
protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
{
base.PrepareContainerForItemOverride(element, item);
var da = new DoubleAnimation();
// init da...
var sb = new Storyboard();
// initi sb with element
sb.Begin();
}
}
我意识到故事板只能与 silverlight Wp 8.1 应用程序一起使用。那么非银光呢?我想在页面转换后制作平滑出现的列表视图元素的动画。我怎样才能做到?我检查了 VisualStateGroup,但要制作这样的动画,我应该在后面制作代码。是否可以仅通过XAML制作?
如果您想使用 XAML
,您可以使用内置的过渡,您可以从已经预定义的过渡中进行选择。一个缺点是您无法通过这种方式创建自己的过渡。
要更改项目转换,请更改 ListView
上的 ItemContainerTransitions
属性:
<ListView x:Name="MyListView">
<ListView.ItemContainerTransitions>
<TransitionCollection>
<!--<ContentThemeTransition HorizontalOffset="0"/>-->
<!--<EntranceThemeTransition />-->
<!-- <AddDeleteThemeTransition /> -->
<!-- <RepositionThemeTransition/> -->
<!-- <ReorderThemeTransition /> -->
<!-- <PopupThemeTransition/> -->
<!-- <EdgeUIThemeTransition Edge="Top"/> -->
</TransitionCollection>
</ListView.ItemContainerTransitions>
</ListView>
您可以根据需要组合它们。只需取消注释上述任何代码并使用最适合您的代码即可。
您可以在扩展 ListView
并覆盖 GetContainerForItemOverride
或 PrepareContainerForItemOverride
方法时创建自定义项目动画。例如,如果您想要将 Storyboard
定义为 StaticResource
,则可以使用 XAML。这是一个例子:
public class MyListView : ListView
{
protected override DependencyObject GetContainerForItemOverride()
{
var container = base.GetContainerForItemOverride();
var da = new DoubleAnimation();
// init da...
var sb = new Storyboard();
// initi sb with container
sb.Begin();
return container;
}
protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
{
base.PrepareContainerForItemOverride(element, item);
var da = new DoubleAnimation();
// init da...
var sb = new Storyboard();
// initi sb with element
sb.Begin();
}
}