x:Uid ディレクティブ

マークアップ要素の一意の識別子を提供します。 ユニバーサル Windows プラットフォーム (UWP) XAML では、.resw リソース ファイルのリソースを使うときなど、XAML のローカライズのプロセスとツールでこの一意の識別子が使われます。

XAML 属性の使用方法

<object x:Uid="stringID".../>

XAML 値

項目 説明
stringID アプリ内の XAML 要素を一意に識別し、リソース ファイルのリソース パスの一部となる文字列です。 「解説」を参照してください。

Remarks

XAML でオブジェクト要素を識別するには x:Uid を使います。 このオブジェクト要素は通常、コントロール クラスか、UI に表示される要素のインスタンスです。 x:Uid で使う文字列とリソース ファイルで使う文字列の関係として、リソース ファイルの文字列は x:Uid の後にドット (.)、その次にローカライズ対象要素の特定のプロパティの名前が続きます。 次の例について考えます。

<Button x:Uid="GoButton" Content="Go"/>

Go という表示テキストを置き換えるコンテンツを指定するには、リソース ファイルの新しいリソースを指定する必要があります。 リソース ファイルには "GoButton.Content" という名前のリソースのエントリを含める必要があります。 この場合、ContentButton クラスに継承される特定のプロパティです。 "GoButton.FlowDirection" にリソースに基づく値を指定するなど、このボタンの他のプロパティにローカライズ値を指定することがあります。 x:Uid とリソース ファイルを一緒に使用する方法の詳細については、「UI とアプリ パッケージ マニフェスト内の文字列をローカライズする」を参照してください。

x:Uid 値に使用可能な文字列の正当性は、リソース ファイル内の識別子やリソース パスとして正当な文字列はどれかという実質的な意味合いにおいて制御されます。

規定された XAML のローカライズ シナリオにより、x:Uidx:Name から分離されています。したがって、ローカライズで使われる識別子は、プログラミング モデルの関連において x:Name への依存関係はありません。 また、x:Name は XAML 名前スコープの概念で管理されるのに対して、x:Uid の一意性はパッケージ リソース インデックス (PRI) システムによって制御されます。 詳しくは、「リソース管理システム」をご覧ください。

UWP XAML での x:Uid の一意性の規則は、以前使われていた XAML を利用したテクノロジと比べると、いくらか異なります。 UWP XAML では、複数の XAML 要素上で同一の x:Uid ID 値がディレクティブとして存在することは正当とされています。 ただし、そうした各要素は、リソース ファイル内のリソースを解決するときに、同じ解決ロジックを共有する必要があります。 また、プロジェクト内のすべての XAML ファイルも、x:Uid 解決の目的で、1 つのリソース範囲を共有します。個々の XAML ファイルに合わせた x:Uid 範囲の概念は存在しません。

場合によっては、パッケージ リソース インデックスの (PRI) システムの組み込みの機能ではなく、リソース パスを使います。 x:Uid 値として使われる文字列はいずれも、ms-resource:///Resources/ で始まり x:Uid 文字列を含むリソース パスを定義します。 パスは、リソース ファイルで指定するプロパティ名か、ターゲットに設定するプロパティ名で終わります。

Windows ランタイム XAML では、プロパティ要素に x:Uid を含めることはできません。