MVVM-如何在ViewModel中包装ViewModel?
首先,我读过,没有找到问题的答案 我不确定这是一个聚合的模型类还是聚合的视图模型类,但这就是我拥有的: 在我的WPF(带Prism)应用程序中,我有一个视图“Filter Customers view”,它连接到一个服务,并根据过滤器请求一个“Customer”对象列表 从服务返回的列表如下所示:MVVM-如何在ViewModel中包装ViewModel?,mvvm,model,viewmodel,Mvvm,Model,Viewmodel,首先,我读过,没有找到问题的答案 我不确定这是一个聚合的模型类还是聚合的视图模型类,但这就是我拥有的: 在我的WPF(带Prism)应用程序中,我有一个视图“Filter Customers view”,它连接到一个服务,并根据过滤器请求一个“Customer”对象列表 从服务返回的列表如下所示: List<CustomerDTO> FilteredCustomers; 另一个类如下所示: public class CustomerDTO { public Gu
List<CustomerDTO> FilteredCustomers;
另一个类如下所示:
public class CustomerDTO
{
public Guid CustomerId;
public String Name;
public String Address;
public String PhoneNumber;
public OrderInfoDTO LastOrderInformation;
public List<OtherClass> ListOfSomething;
}
public class OrderInfoDTO
{
public Guid OrderId;
public DateTime OrderDate;
public int NumberOfProducts;
public double TotalAmountSpent;
}
public class OtherClass
{
public Guid Id;
public String SomeText;
}
如您所见-客户可能有也可能没有“最后一次订单”
我想将“CustomerDTO”对象包装在视图模型中,
这样我就可以将它绑定到视图
这就是我想做的:
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"); }
}
}
问题:
这样想:
OrderInfoDTO不需要视图模型,除非您需要一个视图来更新该数据。如果您正在显示一个包含OrderInfoDTO的CustomerTo信息,那么将其作为CustomerTo视图模型的属性就可以了。WPF不会绑定到字段。仅属性。因此,任何具有字段而非属性的POCO都不能用作模型。你指的是哪个类?我的“ViewModel”类没有绑定到POCO!我的“View”没有绑定到“CustomerTo”(POCO)。它绑定到“CustomerWebModel”!“首先,“CustomerTo”是什么模型?”“WPF不会绑定到字段。仅属性。因此,任何具有字段而非属性的POCO都不能用作模型。”