【发布时间】:2013-01-02 02:03:34
【问题描述】:
我有以下型号:
public class Person
{
public string LastName{get;set;}
public City City {get;set;}
}
public class City
{
public string Name {get;set;}
}
我有两个视图:
- 一个用于显示所有姓氏和城市名称的人 一个 DataGrid(AllPersonsViewModel)
- 用于添加新人员 (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;}
}
}
然后我添加了用于添加新人员的属性。在视图中,我需要一个用于 PersonName 的文本框和一个用于选择城市的组合框:
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 的网格中,我还可以直接绑定到“SelectedCity.Name”而不是额外的属性 CityName。网格也是只读的。
【问题讨论】:
-
还有什么问题?
-
最后一段:“这是正确的方法吗?这对我来说似乎有点多余。在 AllPersonsView 的网格中,我还可以直接绑定到“SelectedCity.Name”而不是额外的属性 CityName 。”
-
是的,我可以阅读。我的意思是你的问题很模糊......这里有错误或正确的方法吗?如果它有效,它可能是正确的,如果不是,那么它可能是错误的。我不认为 Cities 应该是 Person 的属性。
标签: c# .net wpf mvvm viewmodel