2016-04-24 71 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; 
    }