2013年10月25日 星期五

[W8App] 8.0 “Snapped” to 8.1– with LayoutAwarePage

Windows 8.1的一個德政是取消了原本的Snappped View限制,App除了FullScreen外還可以有任意的大小(只是有最小限制)。不過對於已經開發好的8.0 App,就要花時間重新調整不同視窗大小時Layout。

我的懶人改法是,除了FullScreen外一律視為Snapped。依這樣的邏輯其實只要改動一個function – LayoutAwarePage的DetermineVisualState:

   1: protected virtual string DetermineVisualState(ApplicationView appView)
   2: {
   3:     if(appView.IsFullScreen)
   4:     {
   5:         return @"FullScreen" + appView.Orientation.ToString();
   6:     }
   7:     else
   8:     {
   9:         return @"Snapped";
  10:     }
  11: }

1. 原本參數為ApplicationViewState (編譯時有warning),改為ApplicationView
3-10. 原本view state可以直接吐回字串的部份用邏輯修正


當然呼叫端也要調整為



   1: string visualState = DetermineVisualState(ApplicationView.GetForCurrentView());
1.  原本呼叫端是傳入ApplicationView.Value (編譯時有warning),改為ApplicationView.GetForCurrentView()

沒有留言:

張貼留言