Для того, что бы в дальнейшем можно было бы менять способы доступа к данным (в случае работы с разными базами данных), необходимо реализовать интерфейс, в котором определеным методы доступа к данным. Листинг интерфейса приведен в листенге 2.
public interface IInstrumentServiceAgent.
{.
List LoadInstruments ();
}.
Листинг 2. Создание интерфейса доступа к таблице «Инструменты».
В листинге 3 приведена реализация интерфейса IInstrumentServiceAgent.
public class MockInstrumentServiceAgent: IInstrumentServiceAgent.
{.
public List LoadInstruments ().
{.
List Instruments = new List ();
using (var db = new StoreContext ()).
{.
foreach (var d in db. Instruments).
{.
if (d.Count > 0).
Instruments.Add (d);
}.
}.
return Instruments;
}.
}.
Листинг 3. Создание реализации интерфейса доступа к таблице «Инструменты».
Создание ViewModel шаблона проектирования
В дальнейшем, в шаблоне проектирования MVVM, необходимо реализовать такую часть шаблона как ViewModel. Листинг 4 демонстрирует реализацию ViewModel, которая получает коллекцию всех инструментов из базы данных.
public class InstrumentListViewModel: ViewModelBase.
{.
private ObservableCollection instruments;
public ObservableCollection Instruments.
{.
get { return instruments; }.
set.
{.
instruments = value;
NotifyPropertyChanged (vm => vm. Instruments);
}.
}.
// Добавляем сервис агент реализующий интерфейс доступа к данным.
private IInstrumentServiceAgent serviceAgent;
// TODO: Реализуем конструктор который использует сервис агент.
public InstrumentListViewModel (IInstrumentServiceAgent serviceAgent).
{.
this.serviceAgent = serviceAgent;
Instruments = new ObservableCollection (serviceAgent.LoadInstruments ());
}.
}.
Листинг 4. Реализация класса InstrumentViewModel.
Создание представления
Последним этапом в шаблоне проектирования MVVM создается представление для набора данных полученных ViewModel. В листинге 5 показана часть реализации вида, которая выводит список инструментов на экран.
Листинг 5. Реализация вида для набора данных InstrumentViewModel.