バインディングを使用してリソースにアクセスする

Acquire バインディング関数を使用して、文字列プロパティで定義したリソースIDを使用してリソースをロードできます。

リソースIDは、acquire 関数を使用するノード、またはその祖先ノードのいずれかのリソースディクショナリに含まれている必要があります。

  • リソースがまだアプリケーションメモリにロードされていない場合、acquire 関数がリソースをロードします。

  • リソースIDが定義されていない場合、acquire 関数は空の値を返します。

例えば、データソースからテキストリソースのリソースIDを取得し、そのテキストリソースをロードし、Text Block ノードにそのテキストリソースの内容を表示するバインディングを作成できます。そのテキストリソースをローカライズすると、Text Block はアプリケーションの現在のロケールに対するリソースの値を自動的に表示します。データソース内のデータを変更すると、バインディング関数はリソースIDが指すリソースを取得し、テキストを更新します。

リソースIDに基づいてテキストリソースをロードするには:

  1. Kanzi Studio で、アプリケーションに表示したいリソースを作成します。

    例えば、ローカライゼーションテーブルでリストメニューのラベル用のテキストリソースを作成します。アプリケーションのローカライズ を参照してください。

    ../../_images/localization-table-in-library.png ../../_images/localization-table.png
  2. アプリケーションで表示したいリソースのリソースIDを設定する文字列データオブジェクトのデータソースを作成します。データソースの定義 および データソースを使用する を参照してください。

    例:

    1. Kanzi Studio Quick Start ウィンドウで、Examples をクリックします。Data source チュートリアルの横にある ダウンロード をクリックします。

    2. Library で Kanzi Engine Plugins を右クリックし、Import Kanzi Engine Plugin を選択して、<KanziWorkspace>/Tutorials/Data sources/Completed/Application/lib/Win64/GL_vs2019_Release_DLL/XML_data_source.dll Kanzi Engine プラグインをインポートします。

    3. Data Sources で、データソースを作成します。

      このデータソースを使用して、List Box ノードのアイテムにデータを提供します。チュートリアル: データソースからアプリケーションデータを取得する を参照してください。

    <menu type="list">
        <items>
            <item>
                <name type="string">Sounds</name>
            </item>
            <item>
                <name type="string">DateTime</name>
            </item>
            <item>
                <name type="string">Car</name>
            </item>
            <item>
                <name type="string">Display</name>
            </item>
            <item>
                <name type="string">Language</name>
            </item>
        </items>
    </menu>
    
    ../../_images/xml-data-source-in-library.png ../../_images/ivi-data-source.png
  3. リソースをロードします:

    1. acquire バインディング関数を使用して、リソースIDに基づいてリソースをロードします。

      例えば、リソースIDが指すコンテンツを表示したい Text Block ノードを選択し、Properties で + Add Binding をクリックし、Binding Editor で設定します。

      • Property から Text へ

      • Expression へ

        acquire({DataContext.item.name})
        

      Text プロパティを、name 文字列データオブジェクト内の menu リストアイテムのデータソースで定義したリソースIDを持つテキストリソースの内容にバインドします。

      ../../_images/text-block-2d-in-menuitem.png ../../_images/menuitemtext-acquire-binding.png
    2. データソースからのリソースIDが指すコンテンツを表示するノードを作成します。

      例えば、データソースからデータを List Box ノードに入力し、アイテムテンプレートとして、リソースをロードするバインディングを追加したノードを含むプレハブを使用します。リストデータオブジェクトの使用 を参照してください。

      ../../_images/menulist.png ../../_images/menulist-in-preview.png

アプリケーションのロケールを切り替えたり、データソースのデータを変更したりすると、acquire バインディング関数がリソースIDが指すリソースを取得し、List Box ノードのコンテンツを更新します。

関連項目

リソース管理 (Resource management)

バインディング (Bindings)

データソース (Data Sources)

ローカライズ (Localization)