我正试图在我的应用程序中实现购物车系统,这被证明比我预期的更困难/困难。购物车是模型还是视图模型?
目前我的实现是这样的:
public class CartItem
{
public Product Product { get; set; }
public int Quantity { get; set; }
public decimal Subtotal { get { return Quantity * Product.Price; } }
}
public class Cart
{
public ObservableCollection<CartItem> CartItems { get; set; }
public int ItemCount { get; set; }
public decimal Total { get; set; }
public ICommand AddItemCommand { get; set; }
public ICommand RemoveItemCommand { get; set; }
public void AddItem(Product product)
{
}
public void RemoveItem(Product product)
{
}
}
具体来说,我有一个困难时期试图找出它属于MVVM模式中。此实现将一直运行,直到CartItem
上的Quantity
变量被其所属的Cart
(例如视图)以外的内容修改。
一些问题,我问自己:
- 是购物车对象的抽象?是=>这是一个模型。
- 它会被序列化/反序列化到数据库和从数据库中?是的,所以它仍然是一个模型。
- 它是否将数据提供给视图?是。这是一个视图模型。
- 它是否采取行动或修改该数据?是的,所以这是一个视图模型。
** CartItem **肯定是一个模型。 **购物车**是更多的视图将绑定到一个控制器,所以把它放在ViewModel –
所以是你的实际问题“如何更新**视图上的Cart.ItemCount'和'Cart.Total' * *,当CartItem.Quantity在Cart.CartItems集合中存储的CartItem的一个上发生变化时?或“这些类当前代表的MVVM模式的哪些部分:Model,ViewModel或View?” – Teknikaali
是的。我的意思是,不。肯定是哟。可能内斯。也许。 – Will