私はWinFormsの世界からMVVMを使ってWPFに移行しています。MVVMでPOCOを扱う
私の基本システムは、POCOクラス(NHibernateの)と連携し、我々はのModelViewはPOCOのプロキシを公開し、多くのコードを保存することができますので、いくつかのバインド可能にこのPOCOクラスをマッピングするために、いくつかのDynamicProxyを使用します。
public class OrderViewModel
{
public OrderPOCO Order { get; private set; }
}
public class OrderView
{
public OrderView()
{
DataContext = DynamicProxy(new OrderViewModel(new OrderPOCO()));
}
}
public class OrderPOCO
{
public virtual int Number { get; set; };
public virtual IList<OrderItemPOCO> Items { get; set; };
}
public class OrderItemPOCO
{
public virtual decimal Qty { get; set; }
public virtual decimal Price { get; set; }
public virtual decimal Amount { get; set; }
}
OrderItemPOCOのコレクションはグリッドにバインドされます。金額は、いくつかの複雑なルールに依存する計算されたプロパティです(単純な金額=数量*価格ではないため、POCOには入れることはできません)。
私はViewModelでカスタムOrderItemViewModelとOrderItemViewModelのコレクションを公開できますが、私はPOCOクラスを再コードする必要があります。どのように私はすべてのモデルをコードなしでMVVMのこの種の状況をコード化できますか?
@ user598839、ViewModelを導入するためにPOCOクラスを書き直さなければならないのはなぜですか?結局のところ、MVVMのポイントは、ViewとModelが互いに透過的であるということです(実際、ViewModelはViewについてもわかりません)。 –