0

在 3 层架构中,我有一个带有网格的客户订单表格,它显示了要添加到另一个网格中的项目列表,这些网格代表订单项目。

项目网格中的一列显示客户最后一次订购此项目(如果他这样做了)。现在我有以下代码

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

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

据我所知,模型不应该改变,所以我不能向 Item 类添加一个名为 LastOrderedDate 的属性。

如果没有,我将如何在不破坏架构的情况下在网格中显示它(从最佳实践的角度来看)?是我需要的 MVVM 模式吗?

原型来明确这个想法

澄清:

当组合中选定的客户发生更改时,LastOrderedDate 列也应更改其数据。

4

2 回答 2

1

据我所知,模型不应该改变,所以我不能向 Item 类添加一个名为 LastOrderedDate 的属性

为什么?这正是我会做的。如果视图需要另一条信息,则应将其添加到模型中,以便将其传递给视图。

如果由于某些原因您无法修改Item类,则可以创建一个包装类:

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

实际上 MVVM 不是您需要的,但您可以将 Order/Item 类包装在 MyOrderModel 中,其中包含 LastOrderDate 和上次添加的 Items。

MVVM 实际上最适合 WPF/Silverlight 应用程序,因为它们可以利用 DataBinding/Commanding 以及松散耦合的视图和视图模型。MVP 更有可能应用于 winforms。检查这个http://sureshkumarveluswamy.wordpress.com/2010/07/31/mvvm-or-mvp-for-winforms/

希望这会有所帮助。

于 2012-06-21T05:57:41.857 回答