0

3 層アーキテクチャでは、注文アイテムを表す別のグリッドに追加されるアイテムのリストを表示するグリッド付きの顧客注文フォームがあります。

アイテム グリッドの列の 1 つは、顧客が最後にこのアイテムを注文した場合、その注文を示します。今、私は次のコードを持っています

public class Order {
   List<Items> items {get;set;}
   }

public class Item {
  int Id {get;set;}
  string Name {get;set;}
}

私が知る限り、モデルを変更すべきではないので、LastOrderedDate という名前の Item クラスにプロパティを追加することはできません。

そうでない場合は、アーキテクチャを壊さずに (ベスト プラクティスの観点から) グリッドに表示する方法を教えてください。私が必要とするのはMVVMパターンですか?

アイデアを明確にするためのプロトタイプ

説明:

コンボで選択された顧客が変更されると、LastOrderedDate 列もそのデータを変更する必要があります。

4

2 に答える 2

1

モデルを変更してはならないことがわかっている限り、LastOrderedDateというプロパティをItemクラスに追加することはできません。

なんで?これはまさに私がすることです。ビューに別の情報が必要な場合は、それをモデルに追加して、ビューに渡すことができるようにする必要があります。

何らかの理由でItemクラスを変更できない場合は、ラッパークラスを作成できます。

class ItemModel
{
    public Item Item { get; set; }
    public DateTimeOffset LastOrderedDate { get; set; }
}
于 2012-06-21T05:56:42.777 に答える
0

実際にはMVVMが必要なわけではありませんが、最後に追加されたアイテムを含むLastOrderDateを含むMyOrderModelでOrder/Itemクラスをラップできます。

MVVMは、DataBinding / Commandingと、疎結合のビューとビューモデルを利用できるため、実際にはWPF/Silverlightアプリケーションに最適です。MVPは、WinFormに適用される可能性が高くなります。これを確認してくださいhttp://sureshkumarveluswamy.wordpress.com/2010/07/31/mvvm-or-mvp-for-winforms/

これがお役に立てば幸いです。

于 2012-06-21T05:57:41.857 に答える