Coming back to MVVMCross and trying to create a new project, I found that some of the documentation available for the new version (4.2.2 at the time of writing this) is no longer correct; for example, the ToDo file in the sample projects still looks like this:
The steps to get this Store UI working are:
Add a reference to your Core PCL project
Change App.Xaml.cs so that it creates a ‘new Setup(RootFrame)’ during its OnLaunched:
protected override void OnLaunched(LaunchActivatedEventArgs args) { var rootFrame = Window.Current.Content as Frame; // Do not repeat app initialization when the Window already has content, // just ensure that the window is active if (rootFrame == null) { // Create a Frame to act as the navigation context and navigate to the first page rootFrame = new Frame(); if (args.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: Load state from previously suspended application } // Place the frame in the current Window Window.Current.Content = rootFrame; } 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 = MvvmCross.Core.Mvx.Resolve(); start.Start(); } // Ensure the current window is active Window.Current.Activate(); }
For Windows 8 - Add a views folder and a view - xaml.cs and .xaml based on BasicPage - this will add 5 files to the Common folder.
- Change the Common/LayoutAwarePage.cs inheritance to MvvmCross.WindowsStore.Views.MvxStorePage
- Change the Common/LayoutAwarePage.cs - remove the OnNavigatedTo and OnNavigatedFrom handlers
- Add some content for your Xaml - e.g. 5. For Windows 8.1 - Add a views folder and a view based on the BasicPage template
- In the .xaml.cs - remove public NavigationHelper NavigationHelper and all referencing code
- In the .xaml.cs - remove the OnNavigatedTo and OnNavigatedFrom handlers
- Add some content for your Xaml - e.g.
This document was very useful. I was looking specifically at the Babel project in the above sample; this won’t compile under MvvmCross 4.2.2. I’ve listed here everything I needed to do to make it.
Mvx has now been replaced with MvxSimpleIoCContainer.Instance
In App.xaml.cs:
var start = MvxSimpleIoCContainer.Instance.Resolve<IMvxAppStart>();
Is now:
var start = MvxSimpleIoCContainer.Instance.Resolve<IMvxAppStart>();
start.Start();
In App.cs:
private void InitializeText()
{
var builder = new TextProviderBuilder();
Mvx.RegisterSingleton<IMvxTextProviderBuilder>(builder);
Mvx.RegisterSingleton<IMvxTextProvider>(builder.TextProvider);
}
Is now is a separate plug-in by the looks of things:
The new code is:
private void InitializeText()
{
var builder = new TextProviderBuilder();
MvxSimpleIoCContainer.Instance.RegisterSingleton<IMvxTextProviderBuilder>(builder);
MvxSimpleIoCContainer.Instance.RegisterSingleton<IMvxTextProvider>(builder.TextProvider);
}