var setup = new Setup(RootFrame);
setup.Initialize();

private void Application_Launching(object sender, LaunchingEventArgs e)
{
RootFrame.Navigating += RootFrameOnNavigating;
}
private void RootFrameOnNavigating(object sender, NavigatingCancelEventArgs args)
{
args.Cancel = true;
RootFrame.Navigating -= RootFrameOnNavigating;
RootFrame.Dispatcher.BeginInvoke(() => Mvx.Resolve<IMvxAppStart>().Start());
}

if (rootFrame.Content == null)
{
// When the navigation stack isn't restored navigate to the first page,
// configuring the new page by passing required information as a navigation
// parameter
var setup = new Setup(rootFrame);
setup.Initialize();
var start = Mvx.Resolve<IMvxAppStart>();
start.Start();
}

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
	_window = new UIWindow (UIScreen.MainScreen.Bounds);
	var setup = new Setup(this, _window);
	setup.Initialize();
	var startup = Mvx.Resolve<IMvxAppStart>();
	startup.Start();
	_window.MakeKeyAndVisible ();	
	return true;
}

 [Activity(Label = "Hello World", MainLauncher = true, Icon = "@drawable/icon")]
public class SplashScreen : MvxSplashScreenActivity
{
	// instancier un splashscreen ayant comme vue "Resource\Layout\SplashScreen.axml"
	public SplashScreen() : base(Resource.Layout.SplashScreen)
	{
	}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<TextView
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="Loading...." />
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <declare-styleable name="MvxBinding">
    <attr name="MvxBind" format="string"/>
    <attr name="MvxLang" format="string"/>
  </declare-styleable>
  <declare-styleable name="MvxControl">
    <attr name="MvxTemplate" format="string"/>
  </declare-styleable>
  <declare-styleable name="MvxListView">
    <attr name="MvxItemTemplate" format="string"/>
    <attr name="MvxDropDownItemTemplate" format="string"/>
  </declare-styleable>
  <item type="id" name="MvxBindingTagUnique"/>
  <declare-styleable name="MvxImageView">
    <attr name="MvxSource" format="string"/>
  </declare-styleable>
</resources>

{
public class App : MvxApplication  {
	public override void Initialize()  	{
		RegisterAppStart<FirstViewModel>();
}
}
}

// La classe Setup doit être à la racine de chaque projet
namespace Happly.Phone|Happly.Store|Happly.Touch|Happly.Droid  {
	public class Setup : MvxPhoneSetup|MvxStoreSetup|MvxTouchSetup|MvxAndroidSetup  	{
		public Setup (Context context) : base (context) { … } 
		public override IMvxApplication CreateApp()  		{  			return new Core.App();  		} 
	public override IMvxTrace CreateDebugTrace()  		{  			return new DebugTrace();  		}
	} }

namespace Happly.Phone|Happly.Store|Happly.Touch|Happly.Droid {
	public class BaseView : MvxPhonePage|MvxStorePage|MvxViewController|MvxActivity  	{
		public BaseView () { … }
	public void DoAnything () { … } 	}
}

namespace Happly.Phone|Happly.Store|Happly.Touch|Happly.Droid
{
public class FirstView : BaseView 
{
	public FirstView () : base () { … }

	public override void DoAnything () 
{ 
base.DoAnything();
… 
}
	}
}

public class FirstViewModel : MvxViewModel 
{
	// propriété Hello en guise d’exemple
	private string _hello;
	public string Hello 
	{
		get { return _hello; }
		set 
		{
			_hello = value;
			// notifie le système MvvmCross que la propriété a été modifiée
			RaisePropertyChanged(() => Hello);
		}
	}

	// Une commande
	public IMvxCommand SayHello 
	{
		get 
		{ 
return new MvxCommand(() => 
{
				Hello = "Bonjour, on est le " + DateTime.Now;
			});
		}
}
}

<!-- Windows Store : -->
<views:MvxStorePage x:Class="Happly.Store.Views.FirstView" xmlns:views="clr-namespace:Cirrious.MvvmCross.WindowsStore.Views;assembly=Cirrious.MvvmCross.WindowsStore" ...>
	<!-- Le contenu ici -->
</views:MvxStorePage>

<!-- Windows Phone : -->
<views:MvxPhonePage x:Class="Happly.Phone.Views.FirstView" xmlns:views="clr-namespace:Cirrious.MvvmCross.WindowsPhone.Views;assembly=Cirrious.MvvmCross.WindowsPhone" ...>
	<!-- Le contenu ici -->
</views:MvxPhonePage>

<!-- Le contenu pour Windows Store et Windows Phone : -->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel>
<TextBox Text="{Binding Hello, Mode=TwoWay}" />
<TextBlock Text="{Binding Hello}" />
<Button Command="{Binding SayHello}"/>
</StackPanel>
</Grid>

public class FirstView : MvxViewController 
{
	public FirstView() 
: base (UserInterfaceIdiomIsPhone ? "FirstView_iPhone" : "FirstView_iPad", null) { … }

	public override void ViewDidLoad() 
	{
		base.ViewDidLoad();
		// méthode 1 pour appliquer les bindings sur iOS :
		this.CreateBinding(SayHelloUIButton).To((FirstViewModel vm) => vm.SayHello).Apply();
		this.CreateBinding(SayHelloUILabel).To((FirstViewModel vm) => vm.Hello).Apply();
		// méthode 2 pour appliquer les bindings sur iOS :
		var bindings = this.CreateBindingSet<FirstView, FirstViewModel>();
		bindings.Bind(SayHelloUIButton).To(vm => vm.SayHello);
		bindings.Bind(SayHelloUILabel).To(vm => vm.Hello);
		bindings.Apply();
	}
}

[Activity(Label = "Accueil", MainLauncher = true)]
public class FirstView : MvxActivity 
{
	protected override void OnCreate(Bundle bundle) 
	{
		base.OnCreate(bundle);
		// afficher FirstView.axml présent dans le dossier Resources\Layout
		SetContentView(Resource.Layout.FirstView);
	}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:local="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:id="@+id/FirstView">
	<Button android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Dire bonjour !" 
local:MvxBind="Click SayHello"/>
	<TextView local:MvxBind="Text Hello" 
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout> 

// Command in FirstViewModel for navigation
public IMvxCommand SimpleNavigation
{
get
	{
		return new MvxCommand(() => ShowViewModel<SecondViewModel>());
	}
}

public SecondViewModel() { /* do anything */ }
...
public void Start()
{
	if (_loginService.IsLoggedIn()) { /* show content for this user */ }
	else { /* show content for all users */ }
}

public IMvxCommand ParamNavigation
{
get
	{
		return new MvxCommand(() =>
			ShowViewModel<SecondViewModel>(new 
{
	parameter1 = value1,
	parameter2 = value2
});
);
	}
}

public void Init(string parameter1, string parameter2)
{
	_parameter1 = parameter1;
	_parameter2 = parameter2;
	/* do anything with parameters */
}

public class BaseViewModel : MvxViewModel
{
protected LocalizedStrings LocalizedStrings = new LocalizedStrings();

public Textes Textes
{
get { return LocalizedStrings.TextesResources; }
}
}

public IMvxCommand CallCommand
{
get
	{
		return new MvxCommand(() =>
		{
			Mvx.Resolve<IMvxPhoneCallTask>().MakePhoneCall("Happly Formations", "+33 3 89 35 19 19");
		});
	}
}

<Button … Command="{Binding CallCommand}" />
AXML Android :
<Button … local:MvxBind="Click CallCommand" />
iOS :
this.CreateBinding(CallUIButton).To((FirstViewModel vm) => vm.CallCommand).Apply();

 public interface ICalendar {  	void Show(DateTime start, DateTime end, string name);  } 

 public class PluginLoader : IMvxPluginLoader  { 	public static readonly PluginLoader Instance = new PluginLoader(); 	public void EnsureLoaded()  	{ 		var manager = Mvx.Resolve<IMvxPluginManager>(); 		manager.EnsurePlatformAdaptionLoaded<PluginLoader>(); 	} } 

public class Plugin : IMvxPlugin
{
public void Load()
{
Mvx.RegisterType<ICalendar, MvxPhoneCalendar|MvxStoreCalendar|MvxTouchCalendar|MvxDroidCalendar>();
}
}

public class MvxPhoneCalendar : ICalendar
{
	public void Show(DateTime start, DateTime end, string name) 
	{
		/* do calendar on Windows Phone - eg. SaveAppointmentTask */
}
}

public class MvxStoreCalendar : ICalendar
{
	public void Show(DateTime start, DateTime end, string name) 
	{
		/* use Windows 8 Calendar API - eg. AppointmentManager */
}
}

public class MvxTouchCalendar : ICalendar
{
	public void Show(DateTime start, DateTime end, string name) 
	{
		/* use iOS Calendar API - eg. EventKit */
}
}

public class MvxDroidCalendar : ICalendar
{
	public void Show(DateTime start, DateTime end, string name) 
	{
		/* use Android Calendar API eg. intents, CalendarContract, … */
}
}

public IMvxCommand SaveOnCalendarCommand
{
	get
	{
		return new MvxCommand<FirstViewModel> (save =>
			{
				Happly.MvvmCross.Plugins.Calendar. PluginLoader.Instance.EnsureLoaded();
Mvx.Resolve<ICalendar>().Show(DateTime.Now, DateTime.Now.AddHours(2), string.empty);
}
	}
}

var calendar = Mvx.Resolve<ICalendar>().Show(DateTime.Now, DateTime.Now.AddHours(2), string.empty);