2013-02-27 85 views
0

我對當前的應用程序有一個小問題,處理視覺狀態和自動/靜態寬度。在視覺狀態下在靜態寬度和自動寬度之間切換

根據視覺狀態,StackPanel的寬度=「自動」或寬度=「400」。 Blend告訴我,我無法在這兩個值之間設置動畫效果(我在這裏並沒有真正的動畫,只是在全屏視頻和複合視圖之間切換)。現在我必須做一個明確的測試,並改變寬度,當我改變我的視覺狀態(通過VisualStateManager-框架。有沒有什麼辦法可以在XAML(通過故事板)而不是在代碼隱藏中做到這一點?

今天我在做什麼的一些代碼示例:

private void Trailer_OnFullScreenToggled(object sender, EventArgs e) 
{ 
    var state = (Trailer.IsFullScreen() ? "Windowed" : "Fullscreen"); 

    // HACK: Done to get past the auto/px issue 
    VisualsGrid.Width = Trailer.IsFullScreen() ? 400.0 : Double.NaN; 

    VisualStateManager.GoToState(this, state, true); 
} 

任何幫助,將不勝感激

回答

1

的寬度「自動」值化名爲Double.NaN這就是爲什麼動畫失敗 - ! - 它無法對該值進行插值。

您是否嘗試過使用具有離散關鍵幀的關鍵幀動畫?使用離散關鍵幀動畫應該避免動畫系統無法插入Double.NaN或從Double.NaN插入的問題,因爲不會發生插值。

我不是在此刻開發環境的前面,所以我不知道,如果你需要使用一個DoubleAnimationUsingKeyFrames與DiscreteDoubleKeyFrame和Double.NaN或StringAnimationUsingKeyFrames的一個DiscreteStringKeyFrame值和Auto的值。

當然,這不會從固定寬度到自動調整大小,而是會在兩者之間彈出。

+0

流行是我正在尋找=)謝謝! – 2013-02-27 22:21:26