2015-04-12 59 views
0

我需要在WPF中創建一個菜單,它有三種尺寸。可見(文字和圖標),小(圖標)和摺疊。我的想法是採用兩列的網格,一列用於菜單(左側),另一列用於我的主要內容(右側)。然後我想通過按鈕單擊動畫左列寬(應該看起來像擴展器)。現在是我的問題,動畫欄的寬度爲自動的可見狀態。有沒有人有一個想法或樣本來實現這一點?WPF動畫側菜單三種尺寸/狀態

回答

0

據我所知,你想要動畫Grid.Width屬性。 Grid.Width和Grid.Height屬性的類型爲GridLength,並且WPF沒有GridLength類型的標準動畫類。 「自動」 - 只是GridLength的一個特殊值。所以你可能需要編寫你自己的GridLengthAnimation類。以DoubleAnimation類爲例。這幾個環節,以幫助您: https://marlongrech.wordpress.com/2007/08/20/gridlength-animation/ http://www.codeproject.com/Articles/18379/WPF-Tutorial-Part-Writing-a-custom-animation-cla

UPD: 如果你想動畫爲Auto值,你必須知道你的左邊欄的最終尺寸,因爲動畫與beween從和到值範圍經營值。所以你必須決定 - 你將如何繪製中間值?作爲變體 - 總是開始在自動狀態下展開帶有展開式菜單和左列的網格,然後在開始動畫(摺疊列)之後 - 將網格的ActualWidth作爲From值,並且在再次開始動畫(展開列) - 將此已保存的ActualWidth用作To值,最後,在完成反轉動畫時,從GetCurrentValue返回Auto。

+0

是的,我想動畫Grid.Width屬性。我已經找到了自定義動畫的方式並嘗試過。但我沒有找到一種方法來處理GridLength.Auto的「To」值。 – Torsten

+0

更新了答案。 – dzaraev