まず、この投稿を読みましたが、問題の答えが見つかりませんでした。
これが集約されたModelクラスなのか、集約されたViewModelクラスなのかはわかりませんが、これは私が持っているものです。
私のWPF(Prismを使用)アプリケーションには、サービスに接続し、フィルターに基づいて'Customer'オブジェクトのリストを要求するビュー'FilterCustomersView 'があります。
サービスから返されるリストは次のとおりです。
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"); }
}
}
。
質問:
- まず第一に-「CustomerDTO」はモデルとして知られているものですか?また、「OrderInfoDTO」もモデルですか?そして「OtherClass」はどうですか?
- CustomerViewModelクラスの「OrderInfoDTO」をどのように処理しますか?そのための「ViewModel」も作成しますか?'OrderInfoDTO'ビューモデルはどこで作成しますか?誰かが顧客を更新し、「OrderInfoDTO」値を設定するとどうなりますか?
- CustomerViewModelクラスの「OtherClass」のリストをどのように処理しますか?そのためにObservableCollectionを作成しますか?誰かがその中のアイテムを削除したり、その中のアイテムを更新したり、それにアイテムを追加したりしたい場合はどうなりますか?