2016-04-24 87 views
0

我正在爲Windows Phone 8.1(運行時應用程序)創建應用程序。我在任何地方都使用ThemeResource動態地拾取當前的前景和背景畫筆。但是我面臨的一個問題是StatusBar。我將它的顏色設置爲PhoneChromeBrush,它將根據主題再次進行更改。我發現前景色和背景色只能從後面的代碼中設置。Windows Phone 8.1狀態欄主題

這是代碼:

var statusBar = StatusBar.GetForCurrentView(); 
     statusBar.BackgroundColor = (App.Current.Resources["PhoneChromeBrush"] as SolidColorBrush).Color; 
     statusBar.BackgroundOpacity = 1; 
     statusBar.ProgressIndicator.ProgressValue = 1; 
     await statusBar.ShowAsync(); 

什麼是改變狀態欄的顏色,當主題實際上改變了呢?有什麼事情我可以聽主題變化?

回答

0

我實際上通過將相同的代碼放入Window.Current.Activated事件處理程序而不是OnLaunched來解決此問題。我認爲每次都會調用OnLaunched,但事實並非如此。

0

我不知道,你可以聽爲主題的變化時,任何情況下的,但如果你改變自己的主題,那麼這應該工作:

MainPage.xaml中

<Button Content="Use Default Theme" Name="useDefaultThemeButton" 
      Click="useDefaultThemeButton_Click"/> 

    <Button Content="Use Light Theme" Name="useLightThemeButton" 
      Click="useLightThemeButton_Click"/> 

    <Button Content="Use Dark Theme" Name="useDarkThemeButton" 
      Click="useDarkThemeButton_Click"/> 

MainPage.xaml.cs

using Windows.UI.ViewManagement; 
using Windows.UI; 

    // Use Default Theme 

    private void useDefaultThemeButton_Click(object sender, RoutedEventArgs e) 
    { 
     RequestedTheme = ElementTheme.Default; 
     StatusBar.GetForCurrentView().ForegroundColor = null; 
    } 

    // Use Light Theme 

    private void useLightThemeButton_Click(object sender, RoutedEventArgs e) 
    { 
     RequestedTheme = ElementTheme.Light; 
     // exact color unknown 
     StatusBar.GetForCurrentView().ForegroundColor = Colors.Black; 
    } 

    // Use Dark Themme 

    private void useDarkThemeButton_Click(object sender, RoutedEventArgs e) 
    { 
     RequestedTheme = ElementTheme.Dark; 
     // exact color unknown 
     StatusBar.GetForCurrentView().ForegroundColor = Colors.White; 
    }