ハイ コントラスト テーマのサポート (XAML)

Applies to Windows and Windows Phone

このトピックの HTML/JavaScript バージョンをお探しですか?ハイ コントラスト テーマのサポート (HTML)」をご覧ください。

C++、C#、または Visual Basic を使った Windows ランタイム アプリでは、ハイ コントラスト テーマを既定でサポートしています。ユーザーが、システム設定またはアクセシビリティ ツールでハイ コントラスト テーマが使われるように指定すると、色とスタイルの設定が自動的に変わって、UI のコントロールとコンポーネントにハイ コントラスト レイアウトおよびハイ コントラスト レンダリングが使われます。

この既定のサポートでは、既定のテーマとテンプレートを使います。これらのテーマとテンプレートではシステム カラーをリソース定義として参照し、システムがハイ コントラスト モードに移行するとリソース ソースが自動的に変更されます。ただし、コントロールにカスタムのテンプレート、テーマ、スタイルを使う場合は、ハイ コントラストに対して組み込まれているサポートを無効にしないよう注意してください。スタイル指定に Microsoft Visual Studio 用のいずれかの XAML デザイナーを使っている場合は、既定のテンプレートと大幅に異なるテンプレートを定義するたびに、プライマリ テーマと共に、別のハイ コントラスト テーマが生成されます。この別のテーマのディクショナリは、ResourceDictionary 要素の専用プロパティである ThemeDictionaries コレクションに入れられます。

テーマとコントロール テンプレートについて詳しくは、「クイック スタート: コントロール テンプレート」をご覧ください。特定のコントロールの XAML リソース ディクショナリとテーマや、これらのテーマの構築方法、可能な各ハイ コントラスト設定に対して類似していても異なるリソースを、これらのテーマでどのように参照するかということを確認すると参考になります。

有効にされたハイ コントラスト テーマの検出

Windows ランタイム アプリでは、AccessibilitySettings クラスのメンバーを使って、ハイ コントラスト テーマの現在の設定を検出できます。HighContrast プロパティによって、ハイ コントラスト テーマが現在選ばれているかどうかを判断します。HighContrasttrue の場合は、次に、HighContrastScheme プロパティの値を確認し、使われているハイ コントラスト テーマの名前を取得します。コードの応答が必要な HighContrastScheme の一般的な値は、"High Contrast White" と "High Contrast Black" です。XAML で定義された ResourceDictionary キーにはスペースを含めることはできないため、リソース ディクショナリ内のこれらのテーマのキーは通常、それぞれ "HighContrastWhite" と "HighContrastBlack" になります。値が別の文字列の場合に備えて、既定のハイ コントラスト テーマ用のフォールバック ロジックも必要です。このロジックは、XAML ハイ コントラスト サンプルに関するページで紹介されています。

  アプリが初期化され、既にコンテンツが表示されているスコープから AccessibilitySettings コンストラクターを呼び出すようにします。

Windows 8.1 より、実行中にハイ コントラスト リソース値を使うようにアプリを切り替えることができます。この動作は、リソースがスタイルまたはテンプレート XAML で ThemeResource マークアップ拡張を使って要求されている限り有効です。既定のテーマ (generic.xaml) ではすべてこの ThemeResource 技術が使われているため、既定のコントロール テーマを使う場合はこの動作が得られます。また、カスタム テンプレートとスタイルでこの ThemeResource リソース手法を使っている場合は、カスタム コントロールまたはカスタム コントロールのスタイル設定でこれを実行できます。ただし、Windows 8 を対象に構築されたアプリの場合、アプリの実行中にリソースは自動的に再読み込みされません。

Windows 8 の動作

Windows 8 では ThemeResource マークアップ拡張はサポートされていませんでしたが、Windows 8.1 以降で利用できるようになりました。また、Windows 8 は、Windows ランタイム アプリのテーマ関連リソースの動的切り替えをサポートしていません。XAML テンプレートとスタイルのテーマ変更を認識するには、アプリを再起動する必要がありました。これは褒められたユーザー エクスペリエンスではありません。そのため、アプリを再コンパイルして Windows 8.1 をターゲットにすることを強くお勧めします。そうすれば、ThemeResource を利用したスタイルを使うことができ、ユーザーがテーマを切り替えたときに動的にテーマを切り替えることができます。Windows 8 用にコンパイルしたアプリは、Windows 8.1 上で実行しても Windows 8 のときと同じ動作になります。

関連トピック

UI コントラストと設定のサンプル
XAML アクセシビリティ サンプル
XAML ハイ コントラスト サンプル
AccessibilitySettings

 

 

表示:
© 2014 Microsoft