XAML

eXtensible アプリケーション マークアップ言語 (XAML) は XML ベースの言語であり、オブジェクトをインスタンス化して初期化し、それらのオブジェクトを親子階層で編成するためのプログラミング コードの代わりに使用されます。

XAML を使用すると、開発者はコードではなくマークアップを使用して .NET マルチプラットフォーム アプリ UI (.NET MAUI) アプリのユーザー インターフェイスを定義できます。 XAML は .NET MAUI アプリでは必要ありませんが、UI の開発に推奨されるアプローチです。これは、多くの場合、より簡潔で視覚的に一貫性があり、ツールのサポートがあるためです。 XAML は Model-View-ViewModel (MVVM) パターンでの使用にも適しています。XAML では、XAML ベースのデータ バインディングを使用してビューモデル コードにリンクされるビューを定義します。

XAML ファイル内では、すべての .NET MAUI ビュー、レイアウト、ページ、およびカスタム クラスを使用してユーザー インターフェイスを定義できます。 XAML ファイルは、コンパイルするか、アプリ パッケージに埋め込むことができます。 いずれの場合も、XAML はビルド時に解析され、名前付きオブジェクトが見つかり、ランタイムに XAML で表されるオブジェクトがインスタンス化されて初期化されます。

XAML には、同等のコードよりもいくつかの利点があります。

  • XAML は多くの場合、同等のコードよりも簡潔で読みやすくなります。
  • XML に固有の親子階層を使用すると、ユーザー インターフェイス オブジェクトの親子階層をより視覚的に明確にして XAML を模倣できます。

また、マークアップ言語に組み込まれる制限に主に関連する欠点もあります。

  • XAML にコードを含めることはできません。 すべてのイベント ハンドラーは、コード ファイルで定義する必要があります。
  • XAML には、繰り返し処理するためのループを含めることはできません。 ただし、ListViewCollectionView のようなデータのコレクションを表示するコントロールがあります。
  • XAML に条件付き処理を含めることはできません。 ただし、データ バインディングは、条件付き処理を効果的に可能にするコード ベースのバインディング コンバーターを参照できます。
  • 一般に、XAML はパラメーターなしのコンストラクターを定義しないクラスをインスタンス化できませんが、この制限は克服できる場合があります。
  • XAML では一般にメソッドを呼び出せませんが、この制限は克服できる場合もあります。

.NET MAUI アプリで XAML を生成するためのビジュアル デザイナーはありません。 すべての XAML は手動で記述する必要がありますが、XAML ホット リロードを使用して、編集時に UI を表示できます。

XAML は基本的に XML ですが、XAML にはいくつか固有の構文機能があります。 最も重要なものは次のとおりです。

  • プロパティ要素
  • 添付プロパティ
  • マークアップ拡張機能

これらの機能は XML 拡張機能ではありません。 XAML は完全に有効な XML です。 ただし、これらの XAML 構文機能では、一意の方法で XML を使用します。