モデルやビューモデルとなるべきものと、これらの名前の付け方を混同しています。MVVMのモデルとViewModelの明確化と命名規則
わかりやすくするために、INotifyPropertyChange
を残しておきます。
次のクラスは明らかにモデルです:
class CountryViewModel
{
public CountryViewModel
{
// initialize data (not ideal place, I know, but keeping it simple!)
}
public ObservableCollection<CountryModel> Countries
{
private get;
set;
}
}
なぜ上記ではありません:あなたは主にウェブ上で見る何
class CountryModel
{
public string Name { get; set; }
public string Location { 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;
}
}
上記の意味はありますか?私はちょうどそれが標準と思われる理由を理解していないと私はそれがCountriesModel
とCountryViewModel
CountriesModel
からのデータにアクセスするように作成する必要がありますCountriesViewModel
を呼び出す理由を理解していない。
CountryModel
とCountryViewModel
に観測可能なコレクションCountryModel
が含まれている場合は、各都市のリストを含む国はどのように扱いますか?私はCityModel
をPOCOとして持っていて、次に都市リストのために、CityModel
の観測可能なコレクションを持つCityViewModel
を作成します。
しかし、それでは? CityViewModel
を私のCountryModel
の一部にしなければなりませんか?それはまったく正しいとは思わない!多分それはあり、誰かがそれを明らかにすることができます。これは、プロパティName
、Location
、タイプがList<CityModel>
のCountryModel
を作成したので、さらに混乱するところですが、これをMVVMで正しく表現するにはどうすればよいですか?
これを正しく定義するにはどうすればよいですか?特に、オブジェクトのリストとそれらのオブジェクトのそれぞれの部分が別のリストを含んでいます。どのモデル、ビューモデル、どのように私のモデル内のリストを処理するのですか?
私はあなたのviewmodelについて言っているのかを理解し、それは大丈夫ですが、私はドメインモデルを扱うべきかについてはまだ混乱しています。一例として、国を取ると、私はCountryModelとCountriesModelは国の私のリストを格納する必要がありますし、私は私の見解でCountriesModelをリンクするCountriesViewModelを持っている必要がありますか? – Thierry
いいえ、別のドメインモデルクラスの一覧にすぎないドメインモデルクラスは使用しないでください。ただし、複数の国の値を許可するドメインモデルクラスの場合は、国ドメインモデルクラス(コンポジション)のリストを使用する必要があります。 –