2

私はアプリに取り組んでおり、独自のスタイルをアプリに適用したいと考えています。XAML には、テーマに使用しようとしているテーマ ディレクトリと呼ばれるものがあります。結局のところ、windows には 3 つの定義済みテーマがあります。ライト、ダーク、およびハイコントラスト。使用したいテーマを含むリソース ディレクトリの x:Key プロパティを、3 つの定義済みまたはデフォルト以外のものに設定すると、機能しません。理由を知っている人はいますか?

<ResourceDictionary.ThemeDictionary>
    <ResourceDictionary x:key="Default"> // Does work
        (...)
    </ResourceDictionary>
    <ResourceDictionary x:key="MyOwnThemeKey"> // Does not work
        (...)
    </ResourceDictionary>
</ResourceDictionary.ThemeDictionary>
4

1 に答える 1

3

ここから:

テーマ ディクショナリは、ユーザーが現在 PC で使用しているテーマに応じて異なるリソースを保持することを目的とした特殊な種類のマージされたディクショナリです。たとえば、「明るい」テーマでは白色のブラシを使用し、デフォルトのテーマでは暗い色のブラシを使用する場合があります。ブラシは変更されますが、テーマ リソースを参照するだけで、ブラシをリソースとして使用するコントロールの構成は同じになる可能性があります。

そしてここから:

1 つ以上の ResourceDictionary オブジェクト要素。そのような各 ResourceDictionary には x:Key 属性が必要です。その属性の値は一意である必要があり、既知のテーマ名を参照する必要があります。各リソース ディクショナリとその内容は、他のリソースによって消費される名前付きリソースのテーマ値を提供することを意図している必要があります。たとえば、「HighContrast」のテーマ ディクショナリには、ハイ コントラスト デザインの要件を満たすために必要なコントラスト レベルを生成するために、他のスタイルまたはトランジション リソースの他の場所で使用されるブラシまたはカラー キー付きリソースの一部またはすべての再定義が含まれる場合があります。

基本的に、テーマ ディクショナリは既存のテーマを変更することを目的としており、現在の OS テーマに基づいて選択されます。その名前の OS テーマがない場合、それを選択する方法はありません。

于 2012-10-06T12:55:14.463 に答える