Я мигрирую из мира WinForms в WPF с MVVM.
Моя базовая система работает с классами POCO (NHibernate), и мы используем некоторые DynamicProxy для преобразования этих классов POCO в некоторые привязываемые, чтобы ModelView мог предоставлять прокси-сервер POCO и сохранять большой объем кода:
public class OrderViewModel
{
public OrderPOCO Order { get; private set; }
}
public class OrderView
{
public OrderView()
{
DataContext = DynamicProxy(new OrderViewModel(new OrderPOCO()));
}
}
public class OrderPOCO
{
public virtual int Number { get; set; };
public virtual IList<OrderItemPOCO> Items { get; set; };
}
public class OrderItemPOCO
{
public virtual decimal Qty { get; set; }
public virtual decimal Price { get; set; }
public virtual decimal Amount { get; set; }
}
Коллекция OrderItemPOCO объединена в сетку.Amount - это вычисляемое свойство, которое зависит от некоторых сложных правил (я не могу поместить его в POCO, так как это не просто Amount = Qty * Price).
Конечно, я могу выставить в ViewModel пользовательский OrderItemViewModelи коллекция OrderItemViewModel, но мне нужно будет перекодировать мои классы POCO.Как я могу кодировать такую ситуацию в MVVM без перекодирования всей моей модели?