列表框项目上的WPF动画

Sha*_*Wet 5 wpf animation

任何想法我会遵循什么方法让数据绑定列表框的项目"飞"到他们在列表框中的位置,类似于你在那些Windows Card游戏中处理一副牌时的效果?(我正在使用WPF)

She*_*dan 3

您需要扩展该类Panel并将其用作ItemsPanelTemplate您的ListBox.ItemsPanel财产。这真的很简单......只有两种方法可以重写;一个用于测量其中的项目,ListBox另一个用于排列它们。这是有关该主题的微软文章。

这可能是一篇更有用的文章[不幸的是,不再可用],它展示了如何为项目设置动画。对于您的效果,您只需将位置动画的 from 值设置为每个项目的可视区域之外的同一位置即可。例如,使用 from 位置0, finalSize.Height意味着每个项目将从 的左下角滑到其位置ListBox。您可以按如下方式使用新动画Panel

<ListBox>
  <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
      <YourXmlNamespace:YourAnimatedPanel AnyCustomProperty="value" />
    </ItemsPanelTemplate>
  </ListBox.ItemsPanel>
</ListBox>
Run Code Online (Sandbox Code Playgroud)