簡體   English   中英

隨機從不同項目開始的Listview項目動畫

[英]Listview-item animation that starts on different items at random

我正在嘗試為列表視圖項目制作“消失”的動畫。

我有兩個動畫,一個是Doubleanimation,將不透明度從1設置為0,另一個動畫是Thicknessanimation,其將邊距從0,0,0,0設置為50,0,0,0。

如果將其設置為Stackpanel的樣式(位於Listview.Itemtemplate中),它們將同時進行動畫處理,這看起來有點無聊。 所以我想讓每個對象在隨機時間開始動畫。 在WPF中是否有一種很好的方法?

動畫由Datatrigger觸發。

為了正確實現,您需要實現一個自定義Panel 如果您以前沒有做過,那並不是那么困難,這絕對是所有WPF開發人員在需要時都應該做的事情。 您可以在MSDN 上“面板概述”頁面的“ 自定義面板元素”部分中找到大量信息和代碼示例。 另請參閱WPF Tutorial.net上的“ 如何在WPF中創建自定義布局面板”一文。

因此,這將為您提供有關如何創建自定義Panel的想法...您基本上只需實現兩個MeasureOverrideArrangeOverride方法,即可在其中訪問相關集合控件中的元素。 我有幾個這樣的動畫Panel ,可以從ArrangeOverride方法中為每個孩子的Opacity設置動畫,如下所示:

private void AnimateOpacity(UIElement child, double from, double to, 
    TimeSpan animationDuration, EventHandler animationCompletedHandler)
{
    DoubleAnimation opacityAnimation = new DoubleAnimation(from, to, animationDuration,
        FillBehavior.HoldEnd);
    if (animationCompletedHandler != null) opacityAnimation.Completed += 
        animationCompletedHandler;
    child.BeginAnimation(UIElement.OpacityProperty, opacityAnimation, 
        HandoffBehavior.Compose);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM