2016-10-19 4 views
0

私は少しViewModelについて混乱しています、特に私は理解できませんこの内のメソッドを追加するか、ViewModelのスコープは、ビューのモデルのデータをバインドするためのプロパティのみを含んでいます。したがって、このCountryVMの実装を検討:ViewModelにはプロパティのみが必要ですか?

public class CountriesVM : ViewModel 
{ 
    public AsyncObservableCollection<CheckedListItem<Country>> Countries { get; set; } 

    public void GetCountries() 
    { 
     Countries = new AsyncObservableCollection<CheckedListItem<Country>>(); 

     Task.Run(() => 
     { 
      var countries = Soccerway.Scraper.Countries.GetCountries(); 
      foreach (var country in countries) 
      { 
       var nation = new CheckedListItem<Country>(); 
       nation.Item = new Country { Name = country.Name, Link = country.Link }; 
       Countries.Add(nation); 
      } 
     }); 
    } 

ので、基本的にのViewModelに私はアプリケーションの起動時に呼び出されGetCountries()と呼ばれるmetdhoをしました、これはCountriesObservableCollectionに移入されます。しかし、ネット上のいくつかの例は、ViewModelのプロパティしか持っていないことに気付きました。 ViewModelsのそれぞれでは、実装がINotifyPropertyChangedの基本クラスであるViewModelクラスを継承しています。 私の質問は:

私の実装は正しいですか?または、私が呼び出す必要のあるメソッドは、プロパティを鍛えるために配置する必要がありますか?

ありがとうございました。

+0

メソッド付きの[ASP.NET MVC ViewModel]の可能な複製 - それは "合法"ですか?](http://stackoverflow.com/questions/6734925/asp-net-mvc-viewmodel-with-methods-is) -it-legal) – Set

+0

@Setだから私はコントローラのようなものを作る必要がありますか? – Unchained

+0

MVC ViewModelsは全く異なるViewModelです。ここには接続はありません。 –

答えて

1

私の実装は正しいですか?

はい、確かにMVVMに関する限りです。 MVCのコントローラと同様に、VMはUIロジックを処理することになっています。

これをサービスレイヤに移動することも考えられますが、GetCountries()はフェンスにあります。主にUIに関連しているので、ここでそれを残しておきます。

+0

サービスレイヤとは何ですか? – Unchained

+1

[こちらをご覧ください](http://stackoverflow.com/a/32224997/60761)。その写真では、それはビジネス層と呼ばれています。 –

+0

@hHenk Holtermanは正しいフォルダビジネスを作成し、ビジネスレイヤーロジックを持つコントローラという別のフォルダをその内部に配置しますか? – Unchained

1

MVVMのViewModelsを指していると仮定します。はい、あなたがビジネスロジックを含むビューモデルにおける場所の方法を行う、直接あなたの質問に答えるために

Understanding the basics of MVVM design pattern

Model-View-ViewModel (MVVM) Explained

:これらは本当に私はMVVMを理解する助けた2つの素晴らしいの参照です。

編集: そして、私が思い付くことができ、その後可能な限り短い要約:

  • 表示 - UI
  • ViewModelに - UIロジックとビュー&モデル間のバインディング。
  • モデル - データモデルとデータアクセス。
+0

私は一見をします – Unchained

+0

ViewModelはビジネスロジックを行うべきではありません。しかし、区別のビジネス/ UIのロジックは、最初は作るのがむしろ困難です。 –

+0

Thanks @Henk、更新しました。 –

関連する問題