0

UI、BL、DAL、BOの4つのプロジェクトを含むソリューションを作成しました。

  • UI : ユーザー コントロール、ウィンドウ。
  • BL : いくつかのロジックと静的クラス。
  • Dal : 静的クラス リポジトリ。
  • BO : 私のオブジェクト ( Person, ...)

最初の 3 つのプロジェクトは BO プロジェクトを参照しており、UI は BL および BL to DAL を参照しています。BL プロジェクトにはCollectionがあり、UI (ViewModel 内) にはObservableCollectionがあります。問題は、これら 2 つの Collection 間のバインディングです。たとえば、人を追加したい場合は、次のようにする必要があります。

BL.Persons.Add( new Person() { Name = "Paul"});
this.Persons = new ObservableCollection<Person>(BL.Persons);

それは機能しますが、それが最善の方法であるかどうかはわかりません。

4

1 に答える 1

0

ObservableCollection毎回再作成しないでください。ObservableCollectionはオブザーバーに変更を通知するはずなので、この状況では意味がありません。もちろん、これはPersons変更されるため機能しますが、すべてのオブジェクトが変更されたように動作するため、大きなコレクションでは非常に非効率的ですが、実際には新しいオブジェクトが追加されただけです。

これはあなたにとってより良いです:

var person = new Person() { Name = "Paul"};
BL.Persons.Add(person);
this.Persons.Add(person);

ところで、この種のモデル/ビューモデルの混合は好きではありません。ビューモデルのみをビュー公開する方が良いでしょう。よりクリーンですが、それは別の問題です。

于 2012-10-31T12:06:24.117 に答える