Introduction
This article will demonstrate how to work with MVVM development in Xamarin.Forms application.
We are using MVVM light that will provide the facility to implement Model-View-ViewModel. This is a quick way for the development of an application and also provides a user the facility to customize and design the application.
 
Implementation
 
Open Visual Studio and select New Project.
![Xamarin]() 
 
Select project type and give the project a name.
![Xamarin]()
Select the template as Blank App and code sharing as PCL.
![Xamarin]()
Set the target and minimum platform versions as below.
![Xamarin]()
Set the below configuration.
![Xamarin]()
Open "Manage NuGet packages for Solutions" and install the following components.
![Xamarin]()
The ViewModel directory will be added that contains two files MainViewModel.cs and ViewModelLocator.cs file, with a directory structure as below.
![Xamarin]() 
 
Open MainPage.xaml from portable project and modify the content as below.
- <?xml version="1.0" encoding="utf-8" ?>  
- <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"  
-              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"  
-              xmlns:local="clr-namespace:MvvmDemo"  
-              x:Class="MvvmDemo.MainPage" Title="MVVMLightDemo" BackgroundColor="Cyan">  
-     <StackLayout Padding="60">  
-         <Label Text="Enter Data: "></Label>  
-         <Entry Text="{Binding MyData}"></Entry>  
-         <Label Text="Below is the binded data: "></Label>  
-         <Label Text="{Binding MyData}"></Label>  
-     </StackLayout>  
- </ContentPage>  
 
 
Open MainPage.xaml.cs and modify the content as below.
- using Xamarin.Forms;  
- using MvvmDemo.ViewModel;  
- namespace MvvmDemo  
- {  
-     public partial class MainPage : ContentPage  
-     {  
-         MainViewModel mvm;  
-         public MainPage()  
-         {  
-             InitializeComponent();  
-             mvm = new MainViewModel();  
-             BindingContext = mvm;  
-         }  
-     }  
- }  
 
 
Open MainViewModel.cs under ViewModel folder from portable project and modify the content as below.
- using GalaSoft.MvvmLight;  
-   
- namespace MvvmDemo1.ViewModel  
- {  
-     public class MainViewModel : ViewModelBase  
-     {  
-         private string _myData;  
-         public string MyData  
-         {  
-             get {  
-                 return _myData;  
-             }  
-             set {  
-                 this.Set(ref this._myData, value, "MyData");  
-             }  
-         }  
-           
-           
-           
-         public MainViewModel()  
-         {  
-             this.MyData = "sample 2 way binding!";  
-         }  
-     }  
- }  
 
 
Note - Create a new project;  I have attached only portable project in this article.
 
Run the application now. You will get the following output.
![Xamarin]()
You can see the bound value on the below label “sample 2-way binding!”.
 
Delete the Entry content.
![Xamarin]()
The label that binds the entry value is also deleted. Now, give the new value to the entry box.
![Xamarin]()
You can see that the same value binds the label. Any modification will immediate bind to the bound property. You can check the same output on Android Emulator.