你知道我应该采取什么方法来使数据绑定的列表框中的项目“飞”到它们在列表框中的位置,就像在Windows纸牌游戏中发牌时看到的效果一样吗?(我正在使用WPF)
Panel
类,并将其用作ListBox.ItemsPanel
属性的ItemsPanelTemplate
。这很容易...只需重写两个方法:一个是测量ListBox
中的项,另一个是排列它们。这里是微软关于此主题的文章。0,finalSize.Height
作为起始位置意味着每个项目都会从ListBox
的左下角滑动到其位置。您可以按以下方式使用新的动画Panel
:<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<YourXmlNamespace:YourAnimatedPanel AnyCustomProperty="value" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
Window
大小时,这些项就会“跳”到它们的新位置...虽然看起来不太好,但更新时不会出现卡顿。如果你确实想要这样做,只需在自定义Panel
中添加一个类型为UIElement
的私有列表。在ArrangeOverride
方法的末尾,清除你的列表,然后将Panel.Children
属性中的每个子元素添加到其中。下次调用该方法时,此List
将包含先前在Panel
中的子元素。然后对不包含在List
中的项进行动画处理。 - Sheridan