Windows 8 引入 ThemeTransition 系列,讓開發者透過 XAML 宣告即可套用符合 Metro 設計語言的過渡動畫。九大轉場分別對應不同 UI 情境,完全由 Composition 層執行(Independent Animation),不佔用 UI 執行緒,效能極佳。本篇逐一解析適用時機與參數設定。
| 掛載屬性 | 適用對象 | 典型用途 |
|---|---|---|
UIElement.Transitions | 單一元素 | 頁面進場、彈出視窗 |
Panel.ChildrenTransitions | Panel 直系子元素 | 列表項目進場、重新排序 |
ItemsControl.ItemContainerTransitions | ItemsControl 容器 | GridView/ListView 項目增刪移動 |
ContentControl.ContentTransitions | ContentControl 內容切換 | 頁面導航、內容替換 |
適用:頁面/區塊初次載入、導航切換。
參數:FromHorizontalOffset、FromVerticalOffset(起始偏移)、IsStaggeringEnabled(是否錯開呈現子元素)。
<Frame>
<Frame.ContentTransitions>
<TransitionCollection>
<EntranceThemeTransition IsStaggeringEnabled="False" />
</TransitionCollection>
</Frame.ContentTransitions>
</Frame>
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid>
<WrapGrid.ChildrenTransitions>
<TransitionCollection>
<EntranceThemeTransition IsStaggeringEnabled="True" />
</TransitionCollection>
</WrapGrid.ChildrenTransitions>
</WrapGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
適用:同一容器內容替換(如翻頁、Tab 切換)。
參數:FromHorizontalOffset、FromVerticalOffset。
<ContentControl>
<ContentControl.ContentTransitions>
<TransitionCollection><ContentThemeTransition /></TransitionCollection>
</ContentControl.ContentTransitions>
</ContentControl>
適用:元素 Margin、Canvas.Left/Top、RenderTransform 位置改變時自動補間。
用法:直接掛在元素 Transitions,無需參數。
<Rectangle>
<Rectangle.Transitions>
<TransitionCollection><RepositionThemeTransition /></TransitionCollection>
</Rectangle.Transitions>
</Rectangle>
適用:Popup、Flyout、ContextMenu 開啟/關閉。
參數:FromHorizontalOffset、FromVerticalOffset。
<Popup>
<Popup.ChildTransitions>
<TransitionCollection><PopupThemeTransition /></TransitionCollection>
</Popup.ChildTransitions>
</Popup>
適用:集合項目新增/移除(ItemsControl.Items.Add/Remove)。
掛載點:Panel.ChildrenTransitions 或 ItemsControl.ItemContainerTransitions。
適用:集合項目順序變更(Insert、Move)。
掛載點:同 AddDeleteThemeTransition。
適用:側邊欄、鍵盤、大型設定面板(寬/高 > 320px)。
參數:Edge(Left/Top/Right/Bottom)。
適用:AppBar、小型工具提示、選取器下拉(寬/高 ≤ 320px)。
參數:Edge。
IsStaggeringEnabled="True",營造層次感。