在3层架构中,我有一个带网格的客户订单表格,其中显示了要添加到另一个表示订单商品的网格的商品列表。
项目网格中的一列显示客户上次订购此商品的时间。 现在我有以下代码
public class Order {
List<Items> items {get;set;}
}
public class Item {
int Id {get;set;}
string Name {get;set;}
}
据我所知,模型不应该更改,所以我不能向Item类添加一个名为LastOrderedDate的属性。
如果没有,我将如何在不破坏架构的情况下在网格中显示它(从最佳实践的角度来看)? 它是我需要的MVVM模式吗?
当组合中的选定客户发生变化时,LastOrderedDate列也应该更改其数据。
答案 0 :(得分:1)
据我所知,模型不应该更改,所以我无法添加 属性为Item类,名为LastOrderedDate
为什么呢?这正是我要做的。如果视图需要另一条信息,则应将其添加到模型中,以便将其传递给视图。
如果由于某些原因你无法修改Item
类,那么你可以创建一个包装类:
class ItemModel
{
public Item Item { get; set; }
public DateTimeOffset LastOrderedDate { get; set; }
}
答案 1 :(得分:0)
实际上并不是你所需要的MVVM,但你可以将你的Order / Item类包装在一个MyOrderModel中,该MyOrderModel包含LastOrderDate,其中包含上次添加的Items。
MVVM实际上最适合WPF / Silverlight应用程序,因为它们可以利用DataBinding / Commanding和松散耦合的视图和视图模型。 MVP更有可能适用于winforms。检查此http://sureshkumarveluswamy.wordpress.com/2010/07/31/mvvm-or-mvp-for-winforms/
希望这会有所帮助。