Я пытаюсь внедрить систему корзины покупок в моем приложении, которая оказалась более запутанной/сложной, чем я ожидал.Является одной из торговых точек - модели или модели?
В настоящее время моя реализация выглядит следующим образом:
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. Эта реализация работает до тех пор, пока переменная Quantity
на CartItem
не будет изменена чем-либо, кроме Cart
(например, видом), к которому принадлежит.
Некоторые вопросы я задавал себе вопрос:
- Есть корзина абстракция объекта? Да => Это модель.
- Будет ли он сериализован/десериализован в базу данных и из нее? Да, это еще модель.
- Он служит для представления данных? Да. Это модель взгляда.
- Действует ли оно или изменяет эти данные? Да, так что это viewmodel.
** CartItem ** определенно модель. ** Корзина ** является скорее контроллером, который View свяжет так, чтобы он помещался в ViewModel –
Итак, ваш фактический вопрос «Как обновить' Cart.ItemCount' и 'Cart.Total' на ** view * *, когда 'CartItem.Quantity' изменяется на одном из' CartItem', хранящихся в коллекции 'Cart.CartItems'? или «Какая часть шаблона MVVM, который эти классы в настоящее время представляют: Model, ViewModel или View?» – Teknikaali
Да. Я имею ввиду нет. Определенно лет. Возможно, нет. Может быть. – Will