バインディングを使用してリソースにアクセスする¶
Acquire バインディング関数を使用して、文字列プロパティで定義したリソースIDを使用してリソースをロードできます。
リソースIDは、acquire 関数を使用するノード、またはその祖先ノードのいずれかのリソースディクショナリに含まれている必要があります。
リソースがまだアプリケーションメモリにロードされていない場合、
acquire関数がリソースをロードします。リソースIDが定義されていない場合、
acquire関数は空の値を返します。
例えば、データソースからテキストリソースのリソースIDを取得し、そのテキストリソースをロードし、Text Block ノードにそのテキストリソースの内容を表示するバインディングを作成できます。そのテキストリソースをローカライズすると、Text Block はアプリケーションの現在のロケールに対するリソースの値を自動的に表示します。データソース内のデータを変更すると、バインディング関数はリソースIDが指すリソースを取得し、テキストを更新します。
リソースIDに基づいてテキストリソースをロードするには:
Kanzi Studio で、アプリケーションに表示したいリソースを作成します。
例えば、ローカライゼーションテーブルでリストメニューのラベル用のテキストリソースを作成します。アプリケーションのローカライズ を参照してください。
アプリケーションで表示したいリソースのリソースIDを設定する文字列データオブジェクトのデータソースを作成します。データソースの定義 および データソースを使用する を参照してください。
例:
Kanzi Studio Quick Start ウィンドウで Projects をクリックし、Tutorials タブを選択します。Data sources チュートリアルの横にある
をクリックします。
Library で Kanzi Engine Plugins を右クリックし、Import Kanzi Engine Plugin を選択して、
<KanziWorkspace>/Tutorials/Data sources/Completed/Application/lib/Win64/GL_vs2019_Release_DLL/XML_data_source.dllKanzi Engine プラグインをインポートします。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>
リソースをロードします:
acquireバインディング関数を使用して、リソースIDに基づいてリソースをロードします。例えば、リソースIDが指すコンテンツを表示したい Text Block ノードを選択し、Properties で + Add Binding をクリックし、Binding Editor で設定します。
Property から Text へ
Expression へ
acquire({DataContext.item.name})
Text プロパティを、name 文字列データオブジェクト内の menu リストアイテムのデータソースで定義したリソースIDを持つテキストリソースの内容にバインドします。
ヒント
プロパティを右クリックして Create Binding を選択すると、そのプロパティのバインディングの作成を開始できます。
この方法では、プロパティが自動的に Binding Editor に追加されます。
データソースからのリソースIDが指すコンテンツを表示するノードを作成します。
例えば、データソースからデータを List Box ノードに入力し、アイテムテンプレートとして、リソースをロードするバインディングを追加したノードを含むプレハブを使用します。リストデータオブジェクトの使用 を参照してください。
アプリケーションのロケールを切り替えたり、データソースのデータを変更したりすると、acquire バインディング関数がリソースIDが指すリソースを取得し、List Box ノードのコンテンツを更新します。