2016-10-19 3 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 У меня есть metdho под названием GetCountries(), который вызывается при запуске приложения, это будет заполнять CountriesObservableCollection. Но я замечаю, что некоторые примеры в сети имеют только свойства в ViewModel. В каждом ViewModels я наследую класс ViewModel, который является базовым классом, который содержит реализацию INotifyPropertyChanged. Так что мой вопрос:

Это мое воплощение правильно? Или, где метод, который мне нужно вызвать, должен быть помещен для оценки свойств?

Спасибо.

+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 - это совершенно разные ViewModels. Здесь нет связи. –

ответ

1

Является ли моя реализация правильной?

Да, конечно, что касается MVVM. VM должна обрабатывать логику пользовательского интерфейса, как и контроллеры в MVC.

Можно переместить это на уровень служб, но ваш GetCountries() находится на заборе. В основном это связано с пользовательским интерфейсом, поэтому я оставил его здесь.

+0

Что такое уровень обслуживания? – Unchained

+1

Посмотрите [здесь] (http://stackoverflow.com/a/32224997/60761). В этой картине это называется бизнес-слоем. –

+0

@hHenk Holterman правильно создает папку Бизнес и помещает в него другую папку под названием Controller с логикой бизнес-уровня? – Unchained

1

Предполагая, что вы имеете в виду ViewModels в MVVM; эти два фантастических ссылки, которые действительно помогли мне понять MVVM:

Understanding the basics of MVVM design pattern

Model-View-ViewModel (MVVM) Explained

Чтобы ответить на ваш вопрос прямо, да вы делаете методы место в модели представления, которые содержат бизнес-логику.

Edit: А потом кратчайшее резюме я могу придумать:

  • View - UI
  • ViewModel - UI логики и привязки между View & модели.
  • Модель - Модели данных и доступ к данным.
+0

Я посмотрю – Unchained

+0

ViewModel не должен делать бизнес-логику. Но логику разграничения buisness/ui довольно сложно сделать вначале. –

+0

Спасибо @Henk, обновлено. –

Смежные вопросы