Памятка по использованию MVVM Light в проекте Xamarin Forms
Создание проекта Xamarin Forms
Создаем новый Xamarin Foms проект в Visual Studio 2013.
Структура сгенерированного проекта:
Установка MVVM Light
Для проекта с общим кодом MyNewApp
, устанавливаем NuGet пакет MVVM Light libraries only (PCL)
Соглашаемся с лицензией, нажав кнопку I Accept
.
После успешной установки в References проекта можно увидеть:
Использование MVVM Light
Создаем страницу Xamarin.Forms:
Немного подправим файл App.cs
:
using MyNewApp.Views;
using Xamarin.Forms;
namespace MyNewApp
{
public class App
{
public static Page GetMainPage()
{
return new MainPage();
}
}
}
Создадим для этой страницы вью-модель:
using GalaSoft.MvvmLight;
namespace MyNewApp.ViewModels
{
public class MainPageViewModel : ViewModelBase
{
}
}
В корне создадим локатор:
using GalaSoft.MvvmLight.Ioc;
using Microsoft.Practices.ServiceLocation;
using MyNewApp.ViewModels;
namespace MyNewApp
{
public class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<MainPageViewModel>();
}
public MainPageViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainPageViewModel>();
}
}
}
}
Взглянем на структуру проекта:
Снова немного подправим файл App.cs
:
using MyNewApp.Views;
using Xamarin.Forms;
namespace MyNewApp
{
public class App
{
private static ViewModelLocator _locator;
public static ViewModelLocator Locator
{
get
{
return _locator ?? (_locator = new ViewModelLocator());
}
}
public static Page GetMainPage()
{
return new MainPage();
}
}
}
Подключим вью-модель на странице:
using Xamarin.Forms;
namespace MyNewApp.Views
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
BindingContext = App.Locator.Main;
}
}
}
Готово!
Теги: c#, .net, xaml, xamarin forms, ios, android, windows phone