データ バインディング

Browse sample. サンプルを参照する

.NET Multi-Platform App UI (.NET MAUI) アプリは 1 つ以上のページで構成され、各ページには通常、[ビュー] と呼ばれる複数のユーザー インターフェイス オブジェクトが含まれています。 アプリの主なタスクの 1 つは、各ビューを同期された状態に保ち、それらが表すさまざまな値や選択を追跡することです。 多くの場合、ビューは基になるデータ ソースの値を表していて、ユーザーが各ビューを操作してそのデータを変更します。 ビューが変更された場合は、基になるデータにその変更が反映される必要があり、また同様に、基になるデータが変更された場合は、その変更がビューに反映される必要があります。

このジョブを適切に処理するために、各ビューや基になるデータへの変更をアプリに通知する必要があります。 一般的なソリューションは、変更が発生したときに通知されるイベントを定義することです。 次に、これらの変更について通知されるイベント ハンドラーを導入することができます。 これは、1 つのオブジェクトからのデータを別のものに転送することで応答します。 ただし、ビューが多数存在している場合、イベント ハンドラーも多数必要となり、多くの定型コードも関与します。

データ バインディングによってこのタスクが自動化され、イベント ハンドラーが不要になります。 データ バインディングは、コードまたは XAML のどちらでも実装できますが、分離コード ファイルのサイズを小さくできる XAML の方がはるかに一般的です。 イベント ハンドラーにおける手続き型コードを宣言型コードまたはマークアップに置き換えることで、アプリが簡略化されてわかりやすくなります。

データ バインディングは、2 つのオブジェクトのプロパティをリンクして、片方のプロパティへの変更が自動的にもう片方のプロパティに反映されるようにする手法です。 データ バインディングに関与する 2 つのオブジェクトのうちの 1 つは、ほとんど常に、View から派生してページのビジュアル インターフェイスの一部を形成している要素となります。 もう一方のオブジェクトは次のいずれかです。

  • 通常は同じページ上にある、View の別の派生クラス。
  • コード ファイル内のオブジェクト。

この記事では多くの場合、2 つの View 派生物間のデータ バインディングを分かりやすく示すために説明しています。 ただし、View と別のオブジェクト間のデータ バインディングにも、同じ原則を適用できます。 アプリケーションが Model-View-ViewModel (MVVM) アーキテクチャを使って構築されている場合、基になるデータを使うクラスは多くの場合 viewmodel と呼ばれます。

重要

.NET MAUI は、UI スレッドへのバインドの更新をマーシャリングします。 MVVM を使用すると、.NET MAUI のバインド エンジンによって UI スレッドに更新が適用され、データ バインド ビューモデルのプロパティを任意のスレッドから更新できます。