2017-02-13 10 views
1

UWP template10プロジェクトにいくつかのボタンがあります。明るいテーマまたは暗いテーマに切り替えるときに、ボタンの背景色を自動的に変更するようにしていました。UWP Template10 - テーマを変更するときにボタンの背景色を変更する

私は私のcustom.xamlに行き、最後の5行を追加:しかし、これは動作しません

<ResourceDictionary.ThemeDictionaries> 

    <ResourceDictionary x:Key="Light"> 

     <SolidColorBrush x:Key="CustomColorBrush" Color="{ThemeResource CustomColor}" /> 
     <SolidColorBrush x:Key="ContrastColorBrush" Color="{ThemeResource ContrastColor}" /> 
     <SolidColorBrush x:Key="ExtendedSplashBackground" Color="{ThemeResource CustomColor}" /> 
     <SolidColorBrush x:Key="ExtendedSplashForeground" Color="{ThemeResource ContrastColor}" /> 

     <Style TargetType="controls:PageHeader"> 
      <Setter Property="Background" Value="{ThemeResource CustomColorBrush}" /> 
      <Setter Property="Foreground" Value="{ThemeResource ContrastColorBrush}" /> 
     </Style> 

     <!-- Change button background--> 
     <Style TargetType="Button"> 
      <Setter Property="Background" Value="{ThemeResource CustomColorBrush}" /> 
      <Setter Property="Foreground" Value="{ThemeResource ContrastColorBrush}" /> 
     </Style> 

    </ResourceDictionary> 
.... 

を。誰にどのように/これを行うために提案することができるだろうか?

答えて

1

初めてアプリケーションを実行するときに、あなたのコントロールにStylesとSolidColorBrushを使用できますか?そうでない場合は、App.xaml内のRequestedTheme="Dark"を削除してください。

また、 "Default"をキーとしてResourceDictionaryを作成すると、テーマが変更されたときに色が変更されません。 "HighContrast"辞書に加えて、 "Light"と "Dark"の両方のテーマ辞書を指定できる必要があります。例えば

:App.xamlで

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.ThemeDictionaries> 
      <ResourceDictionary x:Key="Light"> 
       <SolidColorBrush x:Key="CustomColor" Color="Orange" /> 
      </ResourceDictionary> 
      <ResourceDictionary x:Key="Dark"> 
       <SolidColorBrush x:Key="CustomColor" Color="Blue" /> 
      </ResourceDictionary> 
      <ResourceDictionary x:Key="HighContrast"> 
       <SolidColorBrush x:Key="CustomColor" Color="Green" /> 
      </ResourceDictionary> 
     </ResourceDictionary.ThemeDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

また、あなたはあなたの中の辞書に「ライト」、「ダーク」と「高コントラスト」の両方のためのテーマの辞書を指定して追加する必要がありますcustom.xaml。 custom.xamlで

<Page.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.ThemeDictionaries> 
      <ResourceDictionary x:Key="Light"> 
       <SolidColorBrush x:Key="CustomColorBrush" Color="{ThemeResource CustomColor}" /> 
       <SolidColorBrush x:Key="ContrastColorBrush" Color="{ThemeResource ContrastColor}" /> 
       <SolidColorBrush x:Key="ExtendedSplashBackground" Color="{ThemeResource CustomColor}" /> 
       <SolidColorBrush x:Key="ExtendedSplashForeground" Color="{ThemeResource ContrastColor}" /> 
       <Style TargetType="controls:PageHeader"> 
        <Setter Property="Background" Value="{ThemeResource CustomColorBrush}" /> 
        <Setter Property="Foreground" Value="{ThemeResource ContrastColorBrush}" /> 
       </Style> 
       <Style TargetType="Button"> 
        <Setter Property="Background" Value="{ThemeResource CustomColorBrush}" /> 
        <Setter Property="Foreground" Value="{ThemeResource ContrastColorBrush}" /> 
       </Style> 
      </ResourceDictionary> 
      <ResourceDictionary x:Key="Dark"> 
       <SolidColorBrush x:Key="CustomColorBrush" Color="{ThemeResource CustomColor}" /> 
       <SolidColorBrush x:Key="ContrastColorBrush" Color="{ThemeResource ContrastColor}" /> 
       <SolidColorBrush x:Key="ExtendedSplashBackground" Color="{ThemeResource CustomColor}" /> 
       <SolidColorBrush x:Key="ExtendedSplashForeground" Color="{ThemeResource ContrastColor}" /> 
       <Style TargetType="controls:PageHeader"> 
        <Setter Property="Background" Value="{ThemeResource CustomColorBrush}" /> 
        <Setter Property="Foreground" Value="{ThemeResource ContrastColorBrush}" /> 
       </Style> 
       <Style TargetType="Button"> 
        <Setter Property="Background" Value="{ThemeResource CustomColorBrush}" /> 
        <Setter Property="Foreground" Value="{ThemeResource ContrastColorBrush}" /> 
       </Style> 
      </ResourceDictionary> 
      <ResourceDictionary x:Key="HighContrast"> 
       <SolidColorBrush x:Key="CustomColorBrush" Color="{ThemeResource CustomColor}" /> 
       <SolidColorBrush x:Key="ContrastColorBrush" Color="{ThemeResource ContrastColor}" /> 
       <SolidColorBrush x:Key="ExtendedSplashBackground" Color="{ThemeResource CustomColor}" /> 
       <SolidColorBrush x:Key="ExtendedSplashForeground" Color="{ThemeResource ContrastColor}" /> 
       <Style TargetType="controls:PageHeader"> 
        <Setter Property="Background" Value="{ThemeResource CustomColorBrush}" /> 
        <Setter Property="Foreground" Value="{ThemeResource ContrastColorBrush}" /> 
       </Style> 
       <Style TargetType="Button"> 
        <Setter Property="Background" Value="{ThemeResource CustomColorBrush}" /> 
        <Setter Property="Foreground" Value="{ThemeResource ContrastColorBrush}" /> 
       </Style> 
      </ResourceDictionary> 
     </ResourceDictionary.ThemeDictionaries> 
    </ResourceDictionary> 
</Page.Resources> 
+0

はあなたの時間のためにあなたのジェイデンをありがとうございます。あなたの答えは問題を解決するために正しい道に私を入れました。 名前(デフォルト)はtemplate10から直接入力されるため、テンプレートをDefaultとは違ってDarkを反映するように変更する必要がありますか?その後、色はすでにcustom.xamlの先頭に設定されているため、app.xamlに追加する必要はありません。以前は表示されませんでした。 :) –

関連する問題