首先,我已阅读this post但未找到问题的答案。
我不确定这是一个聚合的模型类还是聚合的 ViewModel 类,但这就是我所拥有的:
在我的WPF(使用Prism)应用程序中,我有一个视图'过滤客户视图',它连接到服务并根据过滤器请求“客户”对象列表。
从服务返回的列表是:
List<CustomerDTO> FilteredCustomers;
CustomerDTO 如下所示:
public class CustomerDTO
{
public Guid CustomerId;
public String Name;
public String Address;
public String PhoneNumber;
public OrderInfoDTO LastOrderInformation;
public List<OtherClass> ListOfSomething;
}
OrderInfoDTO 如下所示:
public class OrderInfoDTO
{
public Guid OrderId;
public DateTime OrderDate;
public int NumberOfProducts;
public double TotalAmountSpent;
}
OtherClass 如下所示:
public class OtherClass
{
public Guid Id;
public String SomeText;
}
如您所见 - 客户可能有也可能没有'最后订单',
我想将< CustomerDTO '对象包装在 ViewModel 中, 这样我就可以将它绑定到视图。
这就是我的想法:
public class CustomerViewModel : NotificationObject
{
private CustomerDTO _customerDTO;
public CustomerViewModel(CustomerDTO customerDTO)
{
_customerDTO = customerDTO;
}
public Guid CustomerId
{
get { return _customerDTO.CustomerId; }
set { _customerDTO.CustomerId = value; RaisePropertyChanged("CustomerId "); }
}
public String Name
{
get { return _customerDTO.Name; }
set { _customerDTO.Name = value; RaisePropertyChanged("Name"); }
}
public String Address
{
get { return _customerDTO.Address; }
set { _customerDTO.Address = value; RaisePropertyChanged("Address"); }
}
public String PhoneNumber
{
get { return _customerDTO.PhoneNumber; }
set { _customerDTO.PhoneNumber= value; RaisePropertyChanged("PhoneNumber"); }
}
}
问题:
答案 0 :(得分:0)
以这种方式思考:
您需要在所有可能在后台更改的列表中使用ObservableCollection。
除非您需要视图来更新该数据,否则您不需要OrderInfoDTO的视图模型。如果您在其中展示了OrderInfoDTO的CustomerDTO信息,那么将其作为CustomerDTO视图模型的属性就可以了。