11

Windows Phone 8用のアプリケーションを作成していますが、他のアプリケーション(Skypeなど)と同じように、電話OSでユーザーが設定したテーマに関係なくテーマの色を変更したいと思います。

これまでのところ、XAMLのLayoutRoot要素にアクセスすることによって、背景色を変更することしかできませんでした。

this.LayoutRoot.Background = new SolidColorBrush(Colors.White);

そして前景の色:

(App.Current.Resources["PhoneForegroundBrush"] as SolidColorBrush).Color = Colors.Green;

ただし、以下はWindowsPhone8では機能しません。

(App.Current.Resources["PhoneBackgroundBrush"] as SolidColorBrush).Color = Colors.White;
(App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush).Color = Colors.Yellow;

PhoneBackgroundBrushまたはを変更できない理由がわかりません。グーグルソリューションを試しましたが、Windows Phone 7 SDKでのみ機能します。ここでPhoneAccentBrushのチュートリアルは、WP7では機能しますがWP8では機能しません。

ありがとうございました!

4

3 に答える 3

11

ファブリスは間違いなく正しい方向に進んでいます。デフォルトの PhoneAccentBrush を取得し、その色を変更する方法です。

このコードをアプリのコンストラクターの最後に追加すると、アプリの WP8 のアクセント カラーがオーバーライドされます。

    Resources.Remove("PhoneAccentColor");
    Resources.Add("PhoneAccentColor", Colors.Magenta);
    ((SolidColorBrush)Resources["PhoneAccentBrush"]).Color = Colors.Magenta;

このコードを実行してクリックする<Button />と、新しいアクセント カラーが表示されます。

マゼンタの背景でクリックされたボタン

于 2013-01-26T23:58:45.240 に答える
8

別のブラシが必要な場合は、新しいブラシを作成します。既存のものを交換するのに苦労する必要はありません。ある日、それらの組み込みブラシを使用したいと思うかもしれません。

アプリに新しいリソースを追加して、それらを参照することをお勧めします。

<Application.Resources>
    <SolidColorBrush x:Key="AppAccentBrush" Color="#012345"/>
</Application.Resources>

あなたのページでは、そのように参照してください

<TextBlock Text="Custom Accent" Style="{StaticResource PhoneTextNormalStyle}"
           Foreground="{StaticResource AppAccentBrush}"/>
于 2013-01-27T01:56:04.730 に答える
3

数日前に次のブログ記事を見ました。

http://www.rudyhuyn.com/blog/2013/01/18/forcer-un-theme-sous-windows-phone-8/

フランス語ですが、心配しないでください。

Windows Phone 8 で色を変更するサンプルがあります (メソッド DarkTheme() を確認してください)。

于 2013-01-26T15:40:03.580 に答える