XAML 名前空間および名前空間の割り当て
更新 : 2007 年 11 月
このトピックでは、各 Extensible Application Markup Language (XAML) ファイルのルート タグに含まれる 2 つの XML 名前空間の割り当ての存在と目的について説明します。また、独自のコードや個別のアセンブリ内で定義されている要素を使用するために同様の割り当てを生成する方法についても説明します。
このトピックには次のセクションが含まれています。
- WPF および XAML 名前空間宣言
- カスタム クラスおよびアセンブリへの割り当て
- アセンブリ内の XML 名前空間への CLR 名前空間の割り当て
- 関連トピック
WPF および XAML 名前空間宣言
多くの Extensible Application Markup Language (XAML) ファイルのルート タグの名前空間宣言内には、2 つの XML 名前空間宣言が含まれています。最初の宣言は、Windows Presentation Foundation (WPF) 名前空間全体を既定として割り当てます。
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
2 番目の宣言は、個別の Extensible Application Markup Language (XAML) 名前空間を割り当てます (通常は、x: プレフィックスに割り当てます)。
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
これらの宣言の関係は、事実上 XAML が言語定義であり、WPF は XAML を言語として使用する 1 つの実装という位置付けになります。XAML 言語は、準拠のために実装される特定の言語要素を指定します。これらの各要素には、XAML 名前空間を処理する XAML プロセッサ実装を使用してアクセスできます。WPF の実装とそれが対象とするプログラミング モデルは、通常は既定の XML 名前空間を独自の API で使用し、XAML で想定されるマークアップ構文の割り当てられた個別のプレフィックスを使用します。通常、このプレフィックスは x: です。この同じ x: 規則は、この SDK 内のプロジェクト テンプレート、サンプル コード、および言語機能のドキュメントに適用されます。XAML 名前空間は、基本的な WPF アプリケーションにも必要な一般的に使用されるさまざまな機能を定義します。たとえば、部分クラスを使用して分離コードを XAML ファイルに結合するには、そのクラスの名前を、関連する XAML ファイルのルート要素の x:Class 属性として指定する必要があります。または、アクセスする XAML ページでキーを持つリソースとして定義されている要素では、x:Key 属性を設定する必要があります。XAML のこれらの面およびその他の面の詳細については、「XAML の概要」または「XAML 構文用語」を参照してください。
カスタム クラスおよびアセンブリへの割り当て
標準の WPF 名前空間と XAML 名前空間をプレフィックスに割り当てる場合と同じ方法で、xmlns プレフィックス宣言内の一連のトークンを使用して XML 名前空間をアセンブリに割り当てることができます。
構文には、次の名前のトークンおよび値を指定できます。
clr-namespace: 要素として公開するパブリック型を含むアセンブリ内で宣言される 共通言語ランタイム (CLR) 名前空間。
assembly= : 参照される CLR 名前空間の一部またはすべてを含むアセンブリ。通常、この値はパスではなくアセンブリの名前のみです。そのアセンブリへのパスは、コンパイルされた XAML を生成するプロジェクト ファイルのプロジェクト参照として確立される必要があります。必要に応じて、バージョン管理および厳密な名前の署名を組み込むために、値を AssemblyName によって定義されている文字列にすることもできます。
clr-namespace トークンとその値を区切る文字はコロン (:) ですが、assembly トークンとその値を区切る文字は等号 (=) であることに注意してください。これら 2 つのトークン間で使用する文字は、セミコロンです。さらに、宣言内で空白は使用しないでください。次に例を示します。
xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"
現在のアセンブリへの割り当て
assembly は、参照される clr-namespace がカスタム クラスを参照しているアプリケーション コードと同じアセンブリ内で定義されている場合は省略できます。または、等号の後に文字列トークンを設定せずに assembly= を指定すると、前述の場合と等価の構文になります。
同じアセンブリで定義されているカスタム クラスをページのルート要素として使用することはできません。部分クラスを割り当てる必要はありません。XAML でクラスを要素として参照する場合、アプリケーションのページの部分クラスではないクラスのみを割り当てる必要があります。
アセンブリ内の XML 名前空間への CLR 名前空間の割り当て
WPF は、複数の CLR 名前空間を単一の XML 名前空間に割り当てるために、XAML プロセッサが使用する CLR 属性を定義します。この属性 XmlnsDefinitionAttribute は、アセンブリを生成するソース コードのアセンブリ レベルに配置されます。WPF アセンブリ ソース コードでは、この属性を使用して、System.Windows や System.Windows.Controls などの一般的な各種名前空間が https://schemas.microsoft.com/winfx/2006/xaml/presentation 名前空間に割り当てられます。
XmlnsDefinitionAttribute には、XML 名前空間名および CLR 名前空間名の 2 つのパラメータがあります。複数の XmlnsDefinitionAttribute を使用して、複数の CLR 名前空間を同じ XML 名前空間に割り当てることができます。必要に応じて、部分クラスの分離コード ページで適切な using ステートメントを指定することによって、割り当てられた名前空間のメンバを完全修飾せずに参照することもできます。詳細については、XmlnsDefinitionAttribute を参照してください。