私は次のモデルを持っています:
public class Person
{
public string LastName{get;set;}
public City City {get;set;}
}
public class City
{
public string Name {get;set;}
}
私は2つのビューを持っています:
- DataGrid(AllPersonsViewModel) で LastName と都市の名前を持つすべての人を表示するための 1 つ
- 新しい人を追加するためのもの (PersonViewModel)
私のAllPersonsViewModel:
public class AllPersonViewModel : ViewModel
{
public ObservableCollection<PersonViewModel> PersonViewModels {get;set;}
}
私は次の PersonViewModel から始めました。
public class PersonViewModel : ViewModel
{
private Person _person;
public string Name
{
get { return _person.Name;}
set { _person.Name = value; RaisePropertyChange("Name");}
}
public string CityName
{
get { return _person.City.Name;}
}
}
次に、新しい Person を追加するためのプロパティを追加しました。ビューには、PersonName 用の Textbox と、City を選択するための Combobox が必要です。
public class PersonViewModel : ViewModel
{
private Person _person;
public string Name
{
get { return _person.Name;}
set { _person.Name = value; RaisePropertyChange("Name");}
}
public string CityName
{
get { return _person.City.Name;}
}
public City SelectedCity
{
get { return _person.City;}
set { _person.City = value; RaisePropertyChange("SelectedCity");}
}
public ObservableCollection<City> Cities {get;set;}
}
これは正しいアプローチですか?私には少し冗長に思えます。AllPersonsView のグリッドでは、追加のプロパティ CityName の代わりに「SelectedCity.Name」に直接バインドすることもできます。グリッドも読み取り専用です。