Xamarin.Forms XAML の基礎

Extensible Application Markup Language (XAML) は、オブジェクトのインスタンス化と初期化、および親子階層内でのそれらのオブジェクトの整理のために、プログラミング コードの代替手段として Microsoft によって作成された XML ベースの言語です。 XAML は.NET フレームワーク内のいくつかのテクノロジに適応するように調整されていますが、Windows Presentation Foundation (WPF)、Silverlight、Windows ランタイム、およびユニバーサル Windows プラットフォーム (UWP) 内のユーザー インターフェイスのレイアウトの定義について最も実用性が高くなります。

XAML を使用すると、開発者は Xamarin.Forms アプリケーションでコードではなくマークアップを使用してユーザー インターフェイスを定義できます。 XAML は Xamarin.Forms プログラムでは決して必須ではありませんが、多くの場合、同等のコードよりも簡潔で視覚的に一貫性があり、ツールで使用できる可能性があります。 XAML は、一般的な MVVM (Model-View-ViewModel) アプリケーション アーキテクチャでの使用に適しています。XAML は、XAML ベースのデータ バインディングを使用して ViewModel コードにリンクされるビューを定義します。

XAML ファイル内で、Xamarin.Forms 開発者は、すべての Xamarin.Forms のビュー、レイアウト、ページと、カスタム クラスを使用してユーザー インターフェイスを定義できます。 XAML ファイルは、コンパイルすることも、実行可能ファイルに埋め込むこともできます。 いずれの方法でも、XAML 情報がビルド時に解析されて名前付きオブジェクトが検出され、実行時に再度解析されてオブジェクトのインスタンス化と初期化が行われ、これらのオブジェクトとプログラミング コード間のリンクが確立されます。

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

  • XAML は多くの場合、同等のコードよりも簡潔で読みやすくなります。
  • XML に固有の親子階層を使用すると、ユーザー インターフェイス オブジェクトの親子階層をより視覚的に明確にして XAML を模倣できます。
  • XAML はプログラマが簡単に手動で記述できますが、ツールで使用し、ビジュアル デザイン ツールで生成するのにも適しています。

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

  • XAML にコードを含めることはできません。 すべてのイベント ハンドラーは、コード ファイルで定義する必要があります。
  • XAML には、繰り返し処理するためのループを含めることはできません。 (ただし、いくつかの Xamarin.Forms ビジュアル オブジェクト (特筆すべきは ListView) は、その ItemsSource コレクション内のオブジェクトに基づいて複数の子を生成できます)。
  • XAML には条件付き処理を含めることができません (ただし、データ バインディングが、いくつかの条件付き処理を実質的に可能にするコード ベースのバインディング コンバーターを参照できます)。
  • XAML は一般に、パラメーターなしのコンストラクターを定義しないクラスをインスタンス化できません。 (ただし、この制限を回避する方法が存在する場合があります)。
  • XAML は一般に、メソッドを呼び出すことができません。 (この制限も、克服できる可能性があります)。

Xamarin.Forms アプリケーションで XAML を生成するためのビジュアル デザイナーはまだありません。 すべての XAML は手動で記述する必要がありますが、Visual Studio 2019 または Visual Studio for Mac で XAML ホット リロードを使用して、編集中に画面デザインを確認できます。 XAML で多くの経験を持つ開発者でも、実験を行う価値があることを認識しています。

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

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

これらの機能は XML 拡張機能ではありません。 XAML は完全に有効な XML です。 ただし、これらの XAML 構文機能では、一意の方法で XML を使用します。 これらは、以下の記事で詳しく説明します。その最後に、MVVM の実装に XAML を使用する方法の概要を示します。

要件

この記事では、Xamarin.Forms に関する実用的な知識を前提としています。 また、この記事では、XML 名前空間宣言の使用方法や、"要素"、"タグ"、"属性" という用語の理解などの、XML に関する一定の知識も前提としています。

Xamarin.Forms と XML について理解したら、「第 1 部XAML の概要」を読み始めてください。

他の Xamarin ビデオは、Channel 9 および YouTube でご覧いただけます。