4

DataGridView と、SQL テーブルから取り込まれたいくつかのオブジェクトのリストがあります。リストをグリッドにバインドするために使用した方法は 2 つあります。

1.データソースに直接リストを使用する

grdSomeList.DataSource = GetListSomeObjects();

2.バインディングソースを介して使用する

_bsSomeList = new BindingSource();
_bsSomeList .DataSource = GetListSomeObjects();
grdSomeList.DataSource = _bsSomeList ;

データ ソースをバインドするためのベスト プラクティスは何ですか? これら2つの背後にある特定の理由はありますか?

4

1 に答える 1

5

一方向バインディングの場合は、最初の方法を使用します。

双方向バインディングの場合は 2 番目の方法を使用します。つまり、ユーザーが DataGridView セルを変更すると、変更がGetListSomeObjects()データソースに保持/永続化されます。

これが WPF、Winforms、Web のいずれであるかは指定していませんが、BindingSourceOne、Two & etc Way Bindingについて詳しく読むことができます。

双方向

ソース プロパティまたはターゲット プロパティのいずれかを変更すると、他方が自動的に更新されます。このタイプのバインディングは、編集可能なフォームやその他の完全にインタラクティブな UI シナリオに適しています。

一方通行

バインディング ソース (ソース) が変更されたときに、バインディング ターゲット (ターゲット) プロパティを更新します。このタイプのバインディングは、バインドされるコントロールが暗黙的に読み取り専用である場合に適しています。たとえば、株価情報などのソースにバインドできます。あるいは、テーブルのデータ バインドされた背景色など、変更を行うためのコントロール インターフェイスがターゲット プロパティに提供されていない可能性があります。ターゲット プロパティの変更を監視する必要がない場合は、OneWay バインディング モードを使用すると、TwoWay バインディング モードのオーバーヘッドを回避できます。

一度

アプリケーションの起動時またはデータ コンテキストの変更時にバインディング ターゲットを更新します。このタイプのバインドは、現在の状態のスナップショットを使用するのに適しているか、データが完全に静的であるデータを使用している場合に適しています。このタイプのバインドは、ターゲット プロパティをソース プロパティの値で初期化し、データ コンテキストが事前にわからない場合にも役立ちます。これは基本的に、ソース値が変更されない場合に優れたパフォーマンスを提供する OneWay バインディングのより単純な形式です。

OneWayToSource

ターゲット プロパティが変更されたときにソース プロパティを更新します。Default バインディング ターゲットのデフォルトの Mode 値を使用します。デフォルト値は、依存関係プロパティごとに異なります。一般に、テキスト ボックスやチェック ボックスのプロパティなど、ユーザーが編集可能なコントロールのプロパティは既定で双方向のバインドに設定されますが、他のほとんどのプロパティは既定で一方向のバインドに設定されます。依存関係プロパティが既定で一方向または双方向のどちらにバインドされるかをプログラムで判断する方法は、GetMetadata を使用してプロパティのプロパティ メタデータを取得し、BindsTwoWayByDefault プロパティのブール値を確認することです。

于 2013-03-19T03:22:33.920 に答える