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;