0

OK、ここに私の問題があります:

ボタンの前景を設定するなど、既存のコントロールにいくつかのスタイル (色) を適用しようとしています。

これを実現するために、「静的リソース」を使用していForeground="{StaticResource PhoneSubtleBrush}"ます。したがって、テーマが何であれ (ダークまたはライト)、正しい色が選択されています。

では、まだ静的リソースに含まれていないカスタム スタイルを定義したい場合はどうすればよいでしょうか。たとえば、特定のボタンを赤の背景 (ダーク モードの場合) と青の背景 (ライト モードの場合) で表示したい場合はどうでしょうか。

どうやってやるの?

4

2 に答える 2

1

あなたの質問を正しく理解できれば、テーマが変更されたときにボタンの背景色を変更したいと思います。DynamicResourceその場合は、リソースをではなくとして参照する必要がありますStaticResource

これを行うには、ダーク リソースの次のように、ダーク リソース ファイルとライト リソース ファイルのそれぞれで同じ名前のリソースを宣言します。

<SolidColorBrush x:Key="ButtonBackgroundColor" Color="DodgerBlue"/>

これは Light リソースにあります。

<SolidColorBrush x:Key="ButtonBackgroundColor" Color="SkyBlue"/>

次に、ボタンで背景を次のように設定します。

<Button Background="{DynamicResource ButtonBackgroundColor}"/>

そうすれば、テーマを変更ButtonBackgroundColorすると、新しいテーマに関連付けられたリソース ファイルから新しいテーマが取得されます。

于 2013-06-20T13:07:31.680 に答える
0

ボタンには、次のようなものを使用できます。

Button.Background = new SolidColorBrush((Visibility)Application.Current.Resources["PhoneDarkThemeVisibility"] == Visibility.Visible ? Colors.Red : Colors.Blue);

また、ライト テーマとダーク テーマの基準に対応する 2 つの同一のボタンを作成して、それらの可視性を静的リソース PhoneDarkThemeVisibility にバインドし、アクティブなダーク テーマの場合、ライトのダーク テーマのダーク ボタンが表示されるようにすることもできます。この記事を参照してください。これは「Only-XAML」ソリューションです。

また、暗いテーマと明るいテーマの StaticResource として色を定義する 2 つの ResourceDictionaries (MyAccentColor など) を作成し、現在のテーマに応じて 1 つまたは別の辞書を使用することもできます。この記事を参照してください。

于 2013-06-20T13:07:27.310 に答える