2012-01-18 10 views
13

私はビューを持っているとしましょう。 DataContextViewModelに、ViewModelModelのプロパティを公開しています。ビューはMVVMのモデルのプロパティに間接的にバインドする必要がありますか?

  • は、それがModel(例えばBinding Path=Model.FirstName)のプロパティにView内のフィールドをバインドしたいMVVMですか?
  • ModelINotifyPropertyChangedを実装する必要がありますか?

私のチームは、WPFでPrismとMVVMを使用しています。多くのプリズムの例は、Modelに間接的にバインドします。私は個人的には、これが正しいアプローチであるという私の疑問を持っています。モデル内のものは、の動作(プロパティレベルだけでなく)を公開する必要があり、重要なイベントは、eventによって通知される必要があります。クライアントが購読できるかどうか。

ドメイン/モデルオブジェクトを実装することによって、INotifyPropertyChangedは何とかUI/UXを認識しており、種類によってはViewModelにいくつかの冗長性が導入されていると言います。

あなたはどう思いますか?何があなたのために働くのですか? View/ViewModel/Modelと、Prismの例で使用されているハイブリッドの明確な区別はありますか?

+0

フィールドにバインドすることはできません。プロパティは別の問題です... – Will

+0

良い点..... –

答えて

21

多くの人がINotifyPropertyChangedを直接Modelに実装しているのを見てきましたが、同様に私はViewModelでもそれをやっているのを見てきました。

ViewModelには、これを好きにしてください(INotifyPropertyChangedを実装してください)。私は時々ViewModelに冗長性を作成することに同意しますが、私はViewModelModelの間の明確な区別/分離を好み、その目的はどうあるべきですか。私にはModelは文字通り、Modelです。それは私のBusiness Dataの表現である。私には、Viewに(通知プロパティー変更イベントを通じて)何らかの変更を加えるべきではありません。 ViewViewModelと、ViewModelにはModelを使用してください。私は直接ビューに好きではないModelに影響します。私にはModel.FirstNameを使用するのが好きではありません。私にはMMVMと言っているので、Viewの内容はModelです。

+0

Thanks Haris。同意する。 –

+0

+1、私も強く同意します。 – ken2k

+2

私はモデルの10の異なるインスタンスがあり、それぞれのインスタンスは20のプロパティを持っていますが、ViewModelのすべてのプロパティをexlpicitに公開するのは難しいでしょうか? –