[Universal 不一樣] Page.Background
開發環境版本:Visual Studio 2013 + Update 2
Page.Background 在 Windows 8.1 專案中是無作用的,不論設定為 SolidColorBrush 還是 ImageBrush 都不會產生效果。不過因為 Windows 8.1 App 是沒有狀態列 (Status Bar),因此只要 Page 中的第一層 Grid.Margin 設定為 0,0,0,0,設定 Grid.Background 就可以做出滿版的背景。
在 Windows Phone 8.1 又是另外一種狀況,如果要設定滿版的背景使用 Page.Background 是比較快速的方式,這種方式可以使得狀態列 (Status Bar) 和背景共存如下圖所示:
我們接著把 Windows Phone 8.1 中的 Page.Background 設定為透明,同時將第一層 Grid 的Background 設定為藍色,狀態列依然存在則會出現下圖的狀況:
有一種解決方式是透過以下的程式碼將狀態列隱藏,同時如果 Grid.Margin 也是 0,0,0,0,那 Grid 的範圍就會完全覆蓋 Page (我們在此排除 AppBar 的影響)
1: StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
2: await statusBar.HideAsync();
在經歷了很多種狀況之後,我的建議是如果你要把 Windows Phone 8.1 的背景設定成滿版 (尤其用 ImageBrush 時上面空出一排實在很醜),用 Page.Backgound 會是比較理想的選擇,除非你還有其他甚麼特殊考量非讓最上面的狀態列長得不一樣。