Update Existing Xamarin Project to Use MvvmCross

If you don't have existing code, then just use the Ninja Coder Visual Studio Extension for MVVMCross. If you have existing code already (ie: running an Xamarin android that you want to port to MvvmCross, then follow these steps:

Creating New MvvmCross Project

Setting up the Core Project

  • Create a new PCL
  • select .NET Framework 4.5, Windows 8, Windows Phone Silverlight 8, Windows Phone 8.1, Xamarin.Android and Xamarin.iOS - this will ensure that the PCL is in Profile259.
  • Install the nuget package into this Core Project:
Install-Package MvvmCross.HotTuna.MvvmCrossLibraries
  • Create an App.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Cirrious.CrossCore.Plugins;

namespace Something.Core
{
    public class App : Cirrious.MvvmCross.ViewModels.MvxApplication
    {
        public override void LoadPlugins(IMvxPluginManager pluginManager)
        {
            base.LoadPlugins(pluginManager);
        }

        public override void Initialize()
        {
            RegisterAppStart<ViewModels.SomeStartingViewModel>();
        }
    }
}

Creating New Android Project

  • Open your Xamarin Android projct
Install-Package MvvmCross.HotTuna.MvvmCrossLibraries
  • Download the Android Resource file here

  • Add the Android Resource file to the /Resources/Values folder

  • Set it's BuildAction set to AndroidResource

  • Create a new Setup.cs file

using Android.Content;
using Cirrious.MvvmCross.Droid.Platform;
using Cirrious.MvvmCross.ViewModels;
using Something.Core;

namespace Something.Droid
{
    public class Setup : MvxAndroidSetup
    {
        public Setup(Context applicationContext)
            : base(applicationContext)
        {
        }

        protected override IMvxApplication CreateApp()
        {
            return new App();
        }
    }
}

Unit Test Project

Install-Package MvvmCross.HotTuna.MvvmCrossLibraries
Install-Package MvvmCross.HotTuna.Tests -Version 3.2.1