2012-04-05 124 views
2

C#的樣品和源代碼,我已經看到了Win8的Metro風格的應用程序使用的故事板動畫來修改不同意見的網頁(不只是不同的全屏方向,但搶購充滿視圖模式以及) 。可以爲縱向和橫向指定兩種不同的佈局嗎?

這似乎是一個很好的方式來調整您對不同分辨率,方向等的觀點,但...

我有時會爲需要的<Grid>一個非常不同的內部結構肖像&景觀觀點UI規範和<StackPanel>標籤。嘗試使用動畫將這些結構之一變形爲另一個結構似乎是一項相當艱鉅的任務,更不用說隨着規範的成熟而難以維護。

之前,我辭職自己服用的動畫,一個單佈局的方法,我想確保它不是可以簡單地指定了兩個完全獨立的XAML佈局,類似於它是如何工作的Android的?

有人知道嗎?

謝謝。

+4

您可以使用可視狀態管理器在佈局之間切換。在XAML動畫中不僅僅是關於動畫的東西。您可以使用動畫更改樣式或顯示/隱藏不同的元素。 – Denis 2012-04-05 20:26:13

+0

Denis的+1。您可以使用VSM啓用/禁用整個控制塊。儘管如此,它還是一個很大的XAML。 – jv42 2012-04-06 08:22:55

回答

3

唯一的缺點是,你有一個大的重複XAML,就像你已經做了景觀/填充VS捕捉。

但是,你可以做的是動畫你的風景佈局的一些特定屬性,如果這讓你在你需要的地方。

舉例來說,如果有一個GridView,你的箱子需要從250x250的去200x300,你可以複製您用於ItemTemplate風格,調整它,這樣的寬度和高度值是正確的,並使用一個StoryboardItemTemplate"Standard250x250"更改爲"MyNewPortrait200x300Style"。現在

,如果它是一個根本性的變化,就像一個GridViewListView之間的區別,你可能只需要忍受一些重複的佈局代碼,並使用一些Storyboard s到崩潰之一,顯示其他(如模板做景觀/填充與捕捉)。

編輯

要清楚,我說你最好的選擇是通過動畫,其一是調節樣式屬性,或創建一個完全獨立的Panel(無論是GridStackPanel,或者別的什麼)你其他佈局,並使用動畫將Landscape 1上的Visibility設置爲Collapsed,將Portrait 1設置爲Visible。這就是網格模板處理Snapped的方式,它的工作原理非常好。比嘗試變形您的根面板的每個子控件容易得多。

相關問題