2010-02-15 49 views
3

比方說,我有一個可視對象(CustomControls)的列表。他們可能在一個StackPanel內或者是ListView上的項目,我認爲這個容器是這個問題答案的一部分。WPF:如何動畫組件列表?

從視覺上來說,您可以將這些對象視爲隊列中的項目。每當我從這個隊列的底部彈出一個對象時,我想用彈出的對象離開視圖框架和新的對象(假設查看框架只顯示一個子集)來動畫整個隊列,其餘的元素。

什麼是創建這個動畫的最佳方法,什麼是最好的容器?

回答

5

看一看凱文摩爾的AnimatingTilePanel。當元素添加到面板或從面板中刪除元素時,剩下的項目會動畫化以移出或佔據左側空間。除了基於StackPanel邏輯之外,你會想做類似的事情。

儘管如此,你想要解決這個問題。第二個可能會容易得多。

  1. 創建一個面板(而不是控件),它可以按照自己想要的方式爲其子設置動畫。
  2. 創建一個列表框模板,該模板指定使用新面板而不是默認堆棧面板的ItemsPanelTemplate

最後,這個想法是,你根本不需要創建一個自定義的ListBox控件。您與ListBox的交互(通過它的Items屬性或最好是綁定的集合)將與完全沒有動畫完全相同。您將依靠自定義Panel類來完成提供動畫的工作。

UPDATE
我也發現了這個樣本,AnimatedLayoutPanel這是非常相似,但有一個很好的基於Silverlight的展示。

+0

第一個環節是壞的:( – metao 2010-06-04 07:06:25