モデルまたはビューモデルとは何か、およびこれらの名前をどのように付ける必要があるかについて混乱しています。
簡単にするために、 は省略しますINotifyPropertyChange
。
次のクラスは明らかにモデルです。
class CountryModel
{
public string Name { get; set; }
public string Location { get; set; }
}
Web でよく目にするのは、ビュー モデルが次のように定義されるということです。
class CountryViewModel
{
public CountryViewModel
{
// initialize data (not ideal place, I know, but keeping it simple!)
}
public ObservableCollection<CountryModel> Countries
{
private get;
set;
}
}
たとえばCountries
、上記が のモデルではないのはなぜですか? 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
都市のリストを含む国をどのように処理しますか? CityModel
POCO としてを持ち、都市のリストについてはCityViewModel
、 の観察可能なコレクションを持つ を作成しますCityModel
。
しかし、その後は?CityViewModel
私は私の一部を作ることになっていCountryModel
ますか?それはまったく正しくないようです!たぶんそうで、誰かがそれを明確にすることができます。CountryModel
これは、 with propertiesName
とLocation
type のプロパティを作成したため、さらに混乱する場所ですがList<CityModel>
、MVVM でこれを正しく表現するにはどうすればよいでしょうか?
これを正しく定義するには?特に、オブジェクトのリストがあり、それらの各オブジェクトに別のリストが含まれている部分。モデル、ビュー モデル、およびモデル内のリストをどのように処理するのですか?