リソースディクショナリの使用¶
リソースディクショナリは、リソースを指すリソースIDのコレクションです。リソースディクショナリは、任意のノードに追加できます。
デフォルトで、リソースディクショナリは次の場所に存在します:
Screen ノード
すべてのプレハブのルートノード
ノードは、自身のリソースディクショナリおよび祖先ノードで定義されたリソースディクショナリ内のすべてのリソースIDにアクセスできます。リソースプロパティの値としてリソースIDを割り当てることができ、それらは Kanzi Studio で「ResourceID → Resource」という構文で表示されます。
リソースを任意のノードにローカル化することができます。ノードのスコープにリソースを追加することで、そのノードのリソース辞書にリソースIDエントリを追加します。リソースIDは、リソースが使用される場所からリソースを抽象化する識別子です。
ノードにリソースディクショナリを追加する¶
ノードにリソースディクショナリを追加するには、Node Tree Alt を押しながら右クリック ノードを選択し、Resource Dictionary を選択します。
リソースディクショナリの内容を表示する¶
リソースディクショナリの内容を表示するには:
Node Tree で、Dictionaries に表示したいリソースディクショナリのコンテンツを持つノードを選択します。Dictionaries にリストされているリソースは、色分けされています。
白いタイプは、選択されたリソース辞書からの有効なリソースを示します。
例えば、以下の画像では、Screen ノード内のすべてのリソースが有効です。
灰色のイタリック体は、他のリソースディクショナリからのリソースによってオーバーライドされるリソースを示します。
例えば、以下の画像では、Screen ノードのリソースディクショナリ内のボディテキストリソースの値が、警告メッセージノードのリソースディクショナリ内のボディテキストリソースによって上書きされています。
オレンジ色のタイプはエイリアスを示します。エイリアスの使用 を参照してください。
例えば、以下の画像では、Media は Screen/RootPage/Media ノードを指すエイリアスです。
白い文字が薄い灰色の背景に表示されている場合、それは選択されたロケールまたはテーマで、ローカライゼーションテーブルまたはテーマグループで設定されたデフォルト値を使用しているリソースを示しています。ローカライズ (Localization) と アプリケーションのテーマ設定 を参照してください。
例えば、以下の画像では、Localization Table の en-US ロケールが、そのローカライゼーションテーブルで定義された Hello テキストリソースIDのデフォルト値を使用しています。
ロケールとテーマの表示およびアクティブ化¶
ロケールとテーマを表示およびアクティブ化するには、Dictionaries で Locales and Themes をクリックして、ローカライゼーションテーブルとテーマグループの表示を有効にし、各ローカライゼーションテーブルとテーマグループについて、Preview で表示したいロケールとテーマを選択します。
リソースディクショナリにリソースを追加する¶
リソースディクショナリにリソースを追加するには:
ノードにリソースディクショナリを追加します。ノードにリソースディクショナリを追加する を参照してください。
Dictionaries で + Add Resource をクリックし、選択します:
Create を選択し、作成したいリソースのタイプを選択します。
Add Existing を選択し、プロジェクト内に既に存在するリソースを選択します。
リソースディクショナリ内のリソースにkzb URLを使用する¶
別の Kanzi Studio プロジェクト内のリソースを指すために、kzb URLを使用できます。
リソースディクショナリ内のリソースにkzb URLを使用するには:
Dictionaries で、kzb URL を使用したいリソースのセルをダブルクリックし、ドロップダウンメニューで < URL > を選択します。
セルに、使用したいリソースのkzb URLを入力してください。
例えば、別の Kanzi Studio プロジェクトからフォントを使用するには、そのフォントを指すkzb URLを入力します。
APIでリソースディクショナリを使用する¶
リソースディクショナリを作成するには:
// Create a resource dictionary.
ResourceDictionarySharedPtr dictionary = ResourceDictionary::create(domain, "Dictionary");
リソースディクショナリにコンテンツを追加するには:
// Add resources to a resource dictionary.
dictionary->add(ResourceID("red icon"), texture);
dictionary->add(ResourceID("blue icon"), "kzb://my_project/Textures/Blue Icon");
リソースディクショナリからリソースを取得するには:
// Acquire resources from a resource dictionary.
ResourceSharedPtr redIcon = dictionary->acquire(ResourceID("red icon"));
ResourceSharedPtr blueIcon = dictionary->acquire(ResourceID("blue icon"));
ノードのリソースディクショナリを変更するには:
// Change the resource dictionary of a node.
node->setResourceDictionary(dictionary);
ノードの既存のリソースディクショナリを拡張するには:
// Extend the existing resource dictionary of a node with a nested resource dictionary.
node->addResourceDictionary(dictionary);
詳細については、ResourceDictionary クラスを参照してください。