2016-09-16 50 views
1

テーマ(カラーコードを含む)からテーマを動的に設定するUWPアプリケーションを開発しています。UWPアプリケーションのカスタムテーマ

私が作成したファイルは、アプリケーションのコントロールにマップされているカラーコードがノードに含まれているXMLファイルです。

ユーザーは、提供されたXMLファイルのカラーコードを更新できます。これは、アプリケーションのテーマ変更を反映する必要があります。

ユーザーがファイルの内容を編集できるように、このファイルのカスタムの場所を設定できますか?

これは、UWPアプリケーションでテーマを実装するための正しい方法ですか。

また、私はUWP技術でかなり新しいです。

ありがとうございます。

答えて

5

デフォルトでは、UWPアプリは2つのテーマ、つまりLightDarkをサポートしています。

あなたがいずれかの値のいずれか(それがデフォルトで Lightに設定されている)、またはアプリケーションのコンストラクタで App.xaml.csRequestedTheme = ApplicationTheme.Light;を使用して(例外が発生しますどこでも、後でそれを変更する RequestedThemeプロパティを設定することにより App.xamlでアプリのテーマを指定することができます

スローされる)。

RequestedThemeプロパティを設定しない場合は、W10モバイルデバイスまたは記念日の更新および新しいバージョンを実行しているW10モバイルPCのSettings > Personalization > Colorsに設定されたテーマが反映されます。古いWindows 10のデスクトップバージョンではLightになります。

FrameworkElementのテーマは、デフォルトでElementTheme.Defaultに設定され、そのテーマをその親から継承するように設定することもできます。カラーカスタマイズUWPsについては

<StackPanel RequestedTheme="Light"> 
    <TextBlock>Text using light theme.</TextBlock> 
    <TextBlock RequestedTheme="Dark">Text using dark theme.</TextBlock> 
</StackPanel> 

通常、あまりにもSettings > Personalization > Colorsでユーザーが指定したアクセントカラーを使用します。

設定アプリで設定したテーマとアクセントの色を、一部の要素のカスタム色を指定するには、ThemeResourceを使用する必要があります。あらかじめ定義されたXAMLテーマリソースを使用できます。たとえば、このボーダーの背景色は、Lightテーマは#FF000000Darkテーマになります。

<Border Background="{ThemeResource SystemControlBackgroundAltHighBrush}"/> 

それとも、設定アプリに選ばれたアクセントカラーが反映されますSystemControlBackgroundAccentBrushを使用することができます。

各テーマの色を指定する独自のtheme dictionaryを書くこともできます。ここでは、単純なテーマ辞書の例である:

<ResourceDictionary.ThemeDictionaries> 
    <ResourceDictionary x:Key="Light"> 
     <SolidColorBrush x:Key="MyButtonBackgroundThemeBrush" Color="White"/ 
     <SolidColorBrush x:Key="MyButtonForegroundThemeBrush" Color="Black"/> 
    </ResourceDictionary> 
    <ResourceDictionary x:Key="Dark"> 
     <SolidColorBrush x:Key="MyButtonBackgroundThemeBrush" Color="Black"/> 
     <SolidColorBrush x:Key="MyButtonForegroundThemeBrush" Color="White"/> 
    </ResourceDictionary> 
</ResourceDictionary.ThemeDictionaries> 

あなたはこのようにそれを使用します。

<Button Content="Themed button" 
     Background="{ThemeResource MyButtonBackgroundThemeBrush}" 
     Foreground="{ThemeResource MyButtonForegroundThemeBrush}"/ 
     /> 

ボタンの背景がWhiteなり、前景はBlackしばらくLightテーマでBlackWhiteになりますDarkテーマの

ThemeResource、テーマ、HighContrastテーマとデフォルトのテーマリソースhereについて詳しく読むことができます。

thisチャンネル9のビデオは、HighContrastのテーマでも説明されているXAMLテーマです。

関連する問題