2013-01-06 57 views
3

所以我製作了一個應用程序並設置了佈局,以便在縱向模式下顯示正常。對於快照視圖,我創建了一個包含相同對象的不同實例的ListView。這個ListView最初是摺疊的,然後當它改變爲快照時,ListView變爲可見,並且肖像模式對象變爲摺疊狀態。Windows 8 XAML Objects和Snapped View

這工作正常,但由於它們是兩組不同的對象,它會擾亂用戶體驗。如果他們在縱向模式下將文本輸入到框中,然後切換到快照視圖,則其所有文本都將消失(因爲它們將其放在現在摺疊的文本框中)。

問題是,是否有可能只是改變元素的位置/大小,以便它們只是在不同的地方是相同的對象,取決於我們是否處於捕捉模式?

希望這是明確的。謝謝。

回答

7

是的,事實上,該功能是內置於LayoutAwarePage類的,這是您向項目添加基本頁面(與空白頁面)時獲得的Page類型。如果您開始使用網格或分割應用程序模板,則所提供的頁面同樣會擴展爲LayoutAwarePage

這些頁面有一些樣板XAML,它利用了VisualStateManager併爲各種應用程序佈局定義了狀態。你可以做的是爲全景模式設計你的佈局,然後使用Device window來記錄對你的佈局(位置,顏色等)的更改捕捉,填充和肖像的變化。

例如,這裏有一個簡單的用戶界面在橫向模式下:

enter image description here

然後通過切換視覺狀態並打開啓用狀態記錄,我修改了佈局:

enter image description here

在運行時,應用程序在兩種狀態中的每種狀態下看起來如下所示。無需代碼 - 全部由LayoutAwarePage在應用程序的方向發生變化時在VisualStates之間切換。

enter image description here

enter image description here

+1

謝謝你的回答!我嘗試添加XAML對象到列表視圖,而「啓用狀態記錄」已啓用,但它不會讓我,給出錯誤「當錄製到故事板或屬性觸發器時,您可能不會更改父子結構現場。」我可以移動對象的位置,但如果對於捕捉到的屏幕太長,這將不允許它滾動。你知道一種實現它自動移動的方法,使它可以上下滾動嗎?謝謝。 – Luke

+1

你可以將元素放置在ScrollViewer的StackPanel中,但我會謹慎使用滾動 - 特別是垂直(除非它像項目列表)。 –

+0

我似乎遇到了我的某個網頁出現問題。 http://i.imgur.com/FpzGw.png我無法在不同的頁面狀態之間進行選擇。該頁面繼承自LayoutAwarePage,並且在XAML中創建了不同的ApplicationViewStates,如http://msdn.microsoft.com/en-us/library/windows/apps/jj129464.aspx中所指定的那樣。我似乎無法弄清楚它爲什麼不起作用,它確實爲我的其他頁面之一工作。你有什麼想法首先檢查什麼? – Luke