2017-06-06 106 views
1

默認的UWP ListView樣式在其ItemContainerTransitionsTransitionCollection中包含幾個主題轉換。有什麼方法可以知道給定主題轉換的過渡動畫何時完成?ThemeTransitions的完成處理程序

例如,我有一個ListView和一個將項目添加到列表的附加按鈕。我想在添加一個項目時禁用按鈕,因爲如果另一個項目在進行中排隊,動畫將被取消。我可以很容易地禁用基於按鈕Tapped事件的按鈕,但我需要知道我何時可以重新啓用它。

好像我的選擇是:

1)指日可待的時間AddDeleteThemeTransition取量的Task.Delay。看起來很哈克。

2)嘗試使用Storyboard動畫模仿AddDeleteThemeTransition。我有這個工作,但似乎是矯枉過正。也可以使用構圖,但在我看來,它比Storyboarded動畫更具殺傷力。另外,我還沒有看到任何人實現他們自己的Transition(即,從Transition類繼承)。這可能與此無關,但它是否可行?

+0

AddDeleteThemeTransition類沒有屬性,我們無法知道值的變化。它也沒有事件,似乎我們無法知道它何時完成。 –

回答

1

如果你有一個支持的SDK,你使用Composition的第二個想法實際上是最好的。你想要使用的是在你的元素或你的ItemsPanel上定義的隱式動畫,因爲沒有適當的方式能夠告訴動畫何時結束。

ElementCompositionPreview.SetImplicitShowAnimationElementCompositionPreview.SetImplicitHideAnimation支持,你能夠設置隱組成的動畫添加/刪除,以可視化樹 - 並且將避免一個動畫並取消了其他跺腳問題,並且比使用故事板更加高效。

你也不能實現你自己的「過渡」,因爲這個類本身公開地公開地沒有任何東西,但是現在使用合成動畫就沒有必要 - 合成更加強大。