7

モデルまたはビューモデルとは何か、およびこれらの名前をどのように付ける必要があるかについて混乱しています。

簡単にするために、 は省略します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必要なCountriesModelCountryViewModelか、CountriesModel.

また、ウェブ上にあるもの、つまり の観察可能なコレクションを含むものに固執する場合、CountryModelそれぞれCountryViewModelCountryModel都市のリストを含む国をどのように処理しますか? CityModelPOCO としてを持ち、都市のリストについてはCityViewModel、 の観察可能なコレクションを持つ を作成しますCityModel

しかし、その後は?CityViewModel私は私の一部を作ることになっていCountryModelますか?それはまったく正しくないようです!たぶんそうで、誰かがそれを明確にすることができます。CountryModelこれは、 with propertiesNameLocationtype のプロパティを作成したため、さらに混乱する場所ですがList<CityModel>、MVVM でこれを正しく表現するにはどうすればよいでしょうか?

これを正しく定義するには?特に、オブジェクトのリストがあり、それらの各オブジェクトに別のリストが含まれている部分。モデル、ビュー モデル、およびモデル内のリストをどのように処理するのですか?

4

1 に答える 1