Freigeben über


Theme にかかわらず背景色と文字色を簡単に固定する

#wp7dev_jp

出来る限り簡単にThemeに左右されずに背景色とフォントの色を設定する方法について。中華フォント対策の時と同じでこうやれば一番簡単でしたね。背景色と文字色合わせて2行で済みます。

勿論各ページ(MainPageなど)の設定は不要(SystemTray 設定は除く)

App.xaml.cs

public partial class App : Application
{
:
public App()
{
:
}

        //デバイスの表示言語に合わせてアプリケーションの言語を設定します
        RootFrame.Language = System.Windows.Markup.XmlLanguage.GetLanguage(
System.Globalization.CultureInfo.CurrentUICulture.Name);

        (App.Current.Resources["PhoneForegroundBrush"] as SolidColorBrush).Color = Colors.Yellow;
        RootFrame.Background = new SolidColorBrush(Colors.Blue);

    }

文字色(前景色)設定

PhoneForegroundBrush は文字だけでなく、コントロールの境界線などでも使割れているリソースですので、上書きで定義するだけですべてのコントロールに反映されます。ただし型を含めて完全に変えることはできません。なので、GradationBrushに変えることはできません。あまりやろうとする人はいないと思いますがw

背景色設定

通常 各ページの背景は透明で、Rootframe の背景色を表示しているだけなので、RootFrame の背景色を設定すれば前ページに影響します。ここは普通に背景の設定なのでグラデーションブラシやイメージブラシを使うことも出来ます。XAMLでブラシを作ってリソースとして定義して、リソースを参照するといいでしょうね。(下記参照)

App.xaml(ブラシを作る場合)例

<!--アプリケーション リソース-->
<Application.Resources>
<LinearGradientBrush x:Key="myGrad" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FF6C6C6C" Offset="1"/>
</LinearGradientBrush>
</Application.Resources>

App.xaml.cs(ブラシを作る場合)例

RootFrame.Background = App.Current.Resources["myGrad"] as Brush;