我有以下型號:WPF MVVM設計視圖模型
public class Person
{
public string LastName{get;set;}
public City City {get;set;}
}
public class City
{
public string Name {get;set;}
}
我有兩種觀點:
- 一個用於顯示所有姓氏人員和城市中 一個DataGrid的名稱(AllPersonsViewModel )
- 一個用於增加一個新的Person(PersonViewModel)
我AllPerso nsViewModel:
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;}
}
}
然後,我添加的屬性,添加一個新的人。在查看我需要的PERSONNAME和一個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的Grid中,我也可以直接綁定到「SelectedCity.Name」而不是額外的屬性CityName。該網格也是隻讀的。
又是什麼問題? – khellang
最後一段:「這是正確的方法嗎?對我來說似乎有點多餘。在AllPersonsView的Grid中,我也可以直接綁定到」SelectedCity.Name「而不是額外的屬性CityName。」 – LuckyStrike
是的,我可以讀。我的觀點是你的問題非常模糊......這裏有沒有錯誤或正確的方法?如果有效,那麼可能是對的,如果不是的話,那可能是錯誤的。我不認爲城市應該是一個人的財產。 – khellang