Simple MVVM Toolkit – It Lives!

Update: Version 1.0 of Simple MVVM Toolkit Express has now been released and is based on version 1.0 RTM of .NET Core: https://www.nuget.org/packages/SimpleMvvmToolkit.Express. Source code and samples can be found here: https://github.com/SimpleMvvm

Now that .NET Core is stable and RC2 has been released, and the .NET Platform Standard has been proposed to replace Portable Class Libraries, I thought it would be a good idea to port my Simple MVVM Toolkit to .NET Core and provide support for additional platforms, such as Universal Windows Platform and the latest version of Xamarin for cross-platform mobile apps, included iOS from Apple and Android from Google.

dotnet-core.png

Rather than update my existing repository, I decided it was time for a fresh start.  So I createed a new project on GitHub called Simple MVVM Toolkit Express.  It is compatible with the following platforms:

  • Portable Class Libraries: Profile 111 – .NET 4.5, AspNet Core 1.0, Windows 8, Windows Phone 8.1
  • .NET Framework 4.6
  • Universal Windows Platform 10.0
  • Mono/Xamarin: MonoAndroid60, XamariniOS10
  • .NET Core 1.0: NetStandard 1.3

I decided to break compatibility with the following legacy frameworks: .NET 4.0 and Silverlight.

The toolkit has all the major features of the classic version, including classes for models and view models, support for validation and editing with rollbacks, as well as a leak-proof message bus (aka mediator or event aggregator).  Platform-specific threading implementations have been removed, because it’s better to use C#’s built-in async support.

I published a pre-release NuGet package, which you can find here: https://www.nuget.org/packages/SimpleMvvmToolkit.Express.  And I’ve created samples for WPF, UWP and Xamarin, which you can find on the SimpleMvvm home repository.

I used the dotnet CLI (command-line interface) tool chain to build the project and generate a multi-targeted NuGet package, but I had to modify the generated nuspec file to work around some compatibility issues.  In the end, it was a great learning experience, and I found it reassuring that I could continue to use a popular framework for building many different kinds of client applications using the Model-View-ViewModel design pattern.

Happy coding!

About Tony Sneed

Married with three children.
This entry was posted in Technical. Bookmark the permalink.

14 Responses to Simple MVVM Toolkit – It Lives!

  1. ursinius says:

    Hi Tony, Thanks for all the great work that you are doing and the time taken to explain stuff. I am trying to use your new express library and trying to use the MessageBus in particular. Are there any examples that I can reference on this, not entirely sure how to implement and notify between viewmodels.

  2. ursinius says:

    Sorry me again. I don’t see any RegisterToReceive methods for subscribing on the new library. Maybe taking a step back, can I use the new library (SimpleMvvm.Express) or do you need to do more work on this? Also the MessageBus class creates a singleton by the looks of it but doesn’t inherit the MessageBusCore or use it as far as I can see (Hope this doesn’t give away my noobness, if so please excuse), do I still use it then from within the viewmodels? Thank in advance. Jaco

  3. Pingback: 3 .NET Experts You Oughta Know | Codango.Com

  4. George says:

    I’m confused… are there no project types in the latest version? I was expecting to find an installation file which would include Visual Studio project templates, but I see only the github package. This means I need to create my project first (using what template?) and then add SimpleMVVM to it using the package manager.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s