kazuakix の日記

Windows Phone とか好きです

ユニバーサル アプリで "それっぽい" タイトルバーを作る

Windows Phone 7 の頃は XAML に shell:SystemTray.IsVisible="False" みたいな事を書いてシステムトレイを消していたのですが、Windows Phone 8.1 のユニバーサルアプリになってからやり方が変わっていました。というか名前もステータスバーに変わっていました。
 
例えばこんな画面があるとして、今はコードでステータスバーを操作するそうです。*1

f:id:kazuakix:20140821225704j:plain,w500

基本ページの NavigationHelper_LoadState あたりで実行するといいのでしょうか?

private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
    var statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
    await statusBar.HideAsync();
}

 
このコードを実行すると、この通りステータスバーを消すことができます。

f:id:kazuakix:20140821225710j:plain,w500
 

逆にステータスバーを残して こちらにタイトルを表示させる事もできるようです。

上記と同様にステータスバーを取得して、背景色と透明度、タイトルテキスト (とプログレスバーを表示しないための 0) をセットして表示してやります。

private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
    var statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();

    statusBar.BackgroundColor   = Windows.UI.Color.FromArgb(255, 168, 17, 31);
    statusBar.BackgroundOpacity = 1;

    statusBar.ProgressIndicator.Text = "App7";
    statusBar.ProgressIndicator.ProgressValue = 0;
    await statusBar.ProgressIndicator.ShowAsync();
}

 
要はプログレスバーのテキストだけを表示している状態ですが、こんなアプリ どこかで見たことありますね!

f:id:kazuakix:20140821225718j:plain,w500

ちょっと文字が小さ目なのが悩ましいですが、時計が表示されるのはなかなか有用なのではないでしょうか。

*1:そういえば XAML で操作できないんですかね?