Windows Phone - 根据主题更改背景

时间:2014-01-16 15:40:22

标签: xaml windows-phone-7 windows-phone themes resourcedictionary

我正在尝试根据手机主题更改页面背景。我想使用此解决方案来更改多个页面和控件。

我将文件(DarkTheme.xaml,LightTheme.xaml)添加到Resources文件夹中。看起来像这样:

<ResourceDictionary
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:System="clr-namespace:System;assembly=mscorlib">
    <Color x:Key="TestColor">#000000</Color>
    <SolidColorBrush x:Key="TestBrush" Color="{StaticResource TestColor}"/>
    <BitmapImage x:Key="BackgroundImage"
                 UriSource="/BodovySystem;component/Assets/Images/Backgrounds/background_black.png" />
    <ImageSource x:Key="TestBackground">/Assets/Images/Backgrounds/background_black.png</ImageSource>
</ResourceDictionary>

我在App.xaml中有这个:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/BodovySystem;component/Resources/DarkTheme.xaml" />
            <ResourceDictionary Source="/BodovySystem;component/Resources/LightTheme.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <localization:LocalizedStrings x:Key="LocalizedStrings" />
        <DataTemplate x:Key="MySharedTemplate">
            <StackPanel Margin="10" >
                <TextBlock Text="{Binding Name}"/>
            </StackPanel>
        </DataTemplate>

    </ResourceDictionary>
</Application.Resources>

我将ThemeManager添加到我的项目中,并添加到App构造函数中:

        // Get the custom theme
        if (ThemeManager.IsDarkTheme())
        {
            var rd = App.Current.Resources.MergedDictionaries[0];
            ThemeManager.SetCustomTheme(rd, Theme.Dark);
        }
        else
        {
            var rd = App.Current.Resources.MergedDictionaries[1];
            ThemeManager.SetCustomTheme(rd, Theme.Light);
        }

IsDarkTheme是我的分机,用于检查黑暗主题的电话何时。但它并不像我预期的那样完全正常。问题是,当我使用PhoneForegroundBrush时,我为黑色主题获得黑色等等。那么主题应用符合手机主题的最佳方式是什么。应用程序应适用于WP7.1和WP8。感谢

1 个答案:

答案 0 :(得分:0)

相当不错的文章处理Windows手机中的切换主题。

detecting themes in windows phone