我对什么应该是模型或视图模型以及应该如何命名感到困惑。
为简单起见,我将INotifyPropertyChange
省略它。
下面的类显然是一个模型:
class CountryModel
{
public string Name { get; set; }
public string Location { get; set; }
}
你在网上看到的最多的是视图模型的定义如下:
class CountryViewModel
{
public CountryViewModel
{
// initialize data (not ideal place, I know, but keeping it simple!)
}
public ObservableCollection<CountryModel> Countries
{
private get;
set;
}
}
为什么上面不是Countries
, ie的模型CountriesModel
?为什么它被认为是视图模型?
技术上应该是这样吗?那么,我们应该为视图模型创建另一个类吗?
class CountryViewModel
{
private ObservableCollection<CountryModel> _countries = new ....;
public CountryViewModel
{
}
public ObservableCollection<CountryModel> Countries
{
private get { return _countries ?? _countries = LoadCountries(); }
set { _countries = value; }
}
private ObservableCollection<CountryModel> LoadCountries()
{
ObservableCollection<CountryModel> countries = new ...;
foreach (CountryModel country in CountriesModel)
{
countries.add(country);
}
return countries;
}
}
上面说的有道理吗?我只是不明白为什么它似乎是一个标准,以及为什么你会打电话CountriesViewModel
给我,什么时候应该是CountriesModel
并且CountryViewModel
应该创建一个从CountriesModel
.
另外,如果您坚持网络上的内容,即CountryModel
包含CountryViewModel
可观察到的集合CountryModel
,那么您将如何处理包含每个城市列表的国家/地区?我将 aCityModel
作为 POCO,然后对于城市列表,我将创建一个CityViewModel
具有可观察的CityModel
.
但是然后呢?我应该成为我的CityViewModel
一部分CountryModel
吗?这似乎根本不对!也许是这样,有人可以澄清一下。这是我更加困惑的地方,因为我会创建一个CountryModel
with propertiesName
和Location
一个 property of type List<CityModel>
,但是我如何在 MVVM 中正确地表示它呢?
如何正确定义这个?尤其是您拥有对象列表并且每个对象都包含另一个列表的部分。哪个是模型、视图模型以及如何处理模型中的列表?