x:Code 組み込み XAML 型

XAML の運用環境内でのコードの配置を許可します。 このようなコードは、XAML をコンパイルする任意の XAML プロセッサの実装によってコンパイルすることも、ランタイムによる解釈など、後で使用するために XAML の運用環境にそのまま残すこともできます。

XAML オブジェクト要素の使用方法

<x:Code>
   // code instructions, usually enclosed by CDATA...
</x:Code>

Remarks

x:Code XAML ディレクティブ要素内のコードは、引き続き通常の XML 名前空間と指定された XAML 名前空間内で解釈されます。 そのため、通常は、x:Code で使用されるコードを CDATA セグメント内に配置する必要があります。

x:Code は、XAML の運用環境で可能なすべての配置メカニズムで許可されるわけではありません。 特定のフレームワーク (WPF など) では、コードをコンパイルする必要があります。 他のフレームワークでは、x:Code の使用は、通常は許可されていません。

管理される x:Code の内容を許可するフレームワークの場合、x:Code の内容に対して使用する正しい言語コンパイラは、アプリケーションをコンパイルするために使用される含まれているプロジェクトの設定とターゲットによって決まります。

WPF の使用上の注意

x:Code 内で宣言される WPF のコードには、いくつかの重要な制限があります。

  • x:Code ディレクティブ要素は、XAML の運用環境でのルート要素の直接の子要素である必要があります。

  • x:Class ディレクティブは、親ルート要素で指定する必要があります。

  • x:Code 内に配置されたコードは、コンパイルによって、その XAML ページ用に既に作成されている部分クラスのスコープ内になるように処理されます。 したがって、定義するすべてのコードは、その部分クラスのメンバーまたは変数である必要があります。

  • クラスを部分クラス内に入れ子にする以外に、追加のクラスを定義することはできません (入れ子にすることはできますが、入れ子になったクラスは XAML では参照できないため、一般的ではありません)。 既存の部分クラスに使用されている名前空間以外の CLR 名前空間を定義したり、追加先にしたりすることはできません。

  • 部分クラスの CLR 名前空間の外部にあるコード エンティティへのすべての参照は、完全修飾されている必要があります。 宣言されるメンバーが部分クラスのオーバーライド可能なメンバーのオーバーライドである場合は、言語固有のオーバーライド キーワードを使用して指定する必要があります。 x:Code スコープ内に宣言されたメンバーが、コンパイラによる競合の発生が報告されるような方法で XAML の外部で作成された部分クラスのメンバーと競合する場合、XAML ファイルはコンパイルすることも読み込むこともができません。

関連項目