4

数か月間 WinForms データ バインディングを使用しており、いくつかの問題に遭遇しました。

  • 強力なタイピングの欠如
  • コントロールを複雑なプロパティ (モデル/モデルのコレクション) にバインドできません
  • null 値と特別な要件の動作をカスタマイズするのが難しい
  • ソリューションを膨張させる .datasource ファイルを作成します
  • 「ブラックボックス」として動作 – 問題の診断や機能の微調整が困難

ユーザー コントロールとモデル用にカスタマイズされたデータ バインディング ユーティリティの構築を検討しています。これはラムダ関数を介して強く型付けされ、複雑なプロパティをバインドでき、必要なその他の特別な機能を可能にします。バインディングは、おおよそ次のようなもので発生する可能性があります。

var binder = new Binder<Person>();
binder.Bind (p => p.FirstName, FirstNameText);
binder.Bind (p => p.Surname, SurnameText);
binder.Bind (p => p.BirthDate, BirthDatePicker);
binder.Bind (p => p.PersonType, PersonTypePicker);   <-- Binds direct to PersonType model – not PersonTypeId value
binder.Bind (p => p.Interests, InterestsPicker);   <-- Binds collection property to control’s collection property (automatically sync’s contents)
binder.DataSource = _selectedPerson;

質問:

1) このアプローチは推奨されていますか、それとも落とし穴ですか?

2)これをすべて行うサードパーティのユーティリティはありますか?

3) プロジェクトで複雑なデータ バインディング要件にどのように対処していますか?

4

1 に答える 1