All Projects → rogerwcpt → xamarin-mvvvm-frameworks

rogerwcpt / xamarin-mvvvm-frameworks

Licence: other
A Comparison of MVVM Frameworks for Xamarin Projects

Projects that are alternatives of or similar to xamarin-mvvvm-frameworks

XamSvg-Samples
Samples for Xamarin Svg enterprise cross platform and full featured Svg image control
Stars: ✭ 25 (-43.18%)
Mutual labels:  xamarin, mvvmcross, xamarin-forms
Movies
Buy movie tickets in advance, find movie times, and more at "Movies".
Stars: ✭ 33 (-25%)
Mutual labels:  xamarin, prism, xamarin-forms
PrismHandsOn
Prism for Xamarin.Forms入門 Hands-on
Stars: ✭ 22 (-50%)
Mutual labels:  xamarin, prism, xamarin-forms
Prism Samples Forms
Samples that demonstrate how to use various Prism features with Xamarin.Forms
Stars: ✭ 327 (+643.18%)
Mutual labels:  xamarin, prism, xamarin-forms
XamFormsMvxTemplate
A Visual Studio 2017 template for projects based on Xamarin.Forms 3.3 and MvvmCross 6.2
Stars: ✭ 27 (-38.64%)
Mutual labels:  xamarin, mvvmcross, xamarin-forms
Mvvmcross
The .NET MVVM framework for cross-platform solutions, including Xamarin.iOS, Xamarin.Android, Windows and Mac.
Stars: ✭ 3,594 (+8068.18%)
Mutual labels:  xamarin, mvvmcross, xamarin-forms
Xamarin.forms.datagrid
DataGrid Component For Xamarin.Forms Projects
Stars: ✭ 226 (+413.64%)
Mutual labels:  xamarin, xamarin-forms
Xamarinformslayoutchallenges
Sample Layouts for Xamarin Forms
Stars: ✭ 230 (+422.73%)
Mutual labels:  xamarin, xamarin-forms
LaunchMapsPlugin
Launch External Maps Plugin for Xamarin and Windows
Stars: ✭ 49 (+11.36%)
Mutual labels:  xamarin, xamarin-forms
DrinksGalleryApp
Xamarin.Forms goodlooking UI sample using the new CarouselView (Parallax).
Stars: ✭ 51 (+15.91%)
Mutual labels:  xamarin, xamarin-forms
Caliburn.micro
A small, yet powerful framework, designed for building applications across all XAML platforms. Its strong support for MV* patterns will enable you to build your solution quickly, without the need to sacrifice code quality or testability.
Stars: ✭ 2,404 (+5363.64%)
Mutual labels:  xamarin, xamarin-forms
Magicgradients
Draw breathtaking backgrounds in your Xamarin.Forms application. It's a kind of magic.
Stars: ✭ 236 (+436.36%)
Mutual labels:  xamarin, xamarin-forms
plugin-template
Plugin for .NET Template
Stars: ✭ 22 (-50%)
Mutual labels:  xamarin, xamarin-forms
Mobile
The mobile app vault (iOS and Android).
Stars: ✭ 3,149 (+7056.82%)
Mutual labels:  xamarin, xamarin-forms
Xamarin Demos
This repository contains the Syncfusion Xamarin UI control’s samples and the guide to use them.
Stars: ✭ 218 (+395.45%)
Mutual labels:  xamarin, xamarin-forms
Animationnavigationpage
AnimationNavigationPage is a NavigationPage with custom transitions animation effects.
Stars: ✭ 235 (+434.09%)
Mutual labels:  xamarin, xamarin-forms
Reactive Examples
Samples App using the Reactive Extensions and Reactive UI
Stars: ✭ 203 (+361.36%)
Mutual labels:  xamarin, xamarin-forms
Flexbutton
Flexible button control for Xamarin.Forms
Stars: ✭ 245 (+456.82%)
Mutual labels:  xamarin, xamarin-forms
Cognitive-Face-Xamarin
A client library that makes it easy to work with the Microsoft Cognitive Services Face API on Xamarin.iOS, Xamarin.Android, and Xamarin.Forms and/or Portable Class Libraries.
Stars: ✭ 18 (-59.09%)
Mutual labels:  xamarin, xamarin-forms
Connectivityplugin
Connectivity Plugin for Xamarin and Windows
Stars: ✭ 253 (+475%)
Mutual labels:  xamarin, xamarin-forms

A Comparison Matrix of MVVM Frameworks for Xamarin

I often see the question in forums "Which is the best MVVM Framework for Xamarin that I should use?" or "Should I use an MVVM Framework for Xamarin?".

To answer this question for myself (and others hopefully), I've done some research and compared the popular MVVM frameworks for Xamarin and elaborated what they have over the vanilla out the box Xamarin Forms (and Xamarin Native) offfering.

(Comparison below is based on stable versions, not pre-release)

Feature MVVMCross FreshMVVM Prism.Forms MVVMLight Caliburn.Micro
Supports Xamarin Forms
Supports Xamarin Native
Active Development
Up to date Samples
.NET Foundation Member
.NET Standard Support
Up to date documentation
Built in IOC Container
Fast IOC Container
View-to-ViewModel auto wiring
Navigation Service
ViewModel-to-ViewModel Navigation
ViewModel Parameters
ViewModel Lifecycle
Non-Invasive XAML
Event Aggregator
View Presenter Overriding
Converter Helpers
Plugin Support
Switch IOC Container

GitHub Stats

Links MVVMCross FreshMVVM Prism.Forms MVVMLight Caliburn.Micro
GitHub Link Link Link Link Link
GitHub master Last commit* 1 month ago 9 days ago 11 days ago 3 months ago 1 month ago
Contributors 275 15 83 4 34

Nuget Stats

Links MVVMCross FreshMVVM Prism.Forms MVVMLight Caliburn.Micro
Nuget Link Link Link Link Link
Nuget Last updated* 1 month ago 5 days ago 5 months ago 6 months ago 14 months ago
Downloads - last major version* 86,597 59,845 74,273 94,670 122,487
Downloads - total* 1,071,196 148,771 518,698 1,152,775 793,456
Downloads - average per day* 497 105 355 384 273

'* As of 21 March 2019

Summary

MVVMCross is the most feature complete and suitable for most sizable applications. It has a very large community support base from a contributions and troubleshooting point of view. The biggest drawback for me of MVVMCross as far as XAML goes, its that you need to use their MvxContentPage in your declarations.

The other drawback I've found with MVVMCross are the mysterious bugs that appear in Release Mode because you havne't included an up to date LinkerPleaseInclude.cs file which they provide in their sample applications.

Prism is suitable for large applications, but I find the documentation lacking. My pet peev is use of magic strings for Navigation to a page. The documentation lists most of the default containers as legacy, so only DryIOC is performant enough. There is however and undocumented Prism.SimpleInjector nuget package which should also offer good performance as far as IOC containers go.

The benefit that MVVMCross and MVVMLight have over the other "Xamarin Forms Only" frameworks is that you can have your Core ViewModels be rendered to Native and Forms platofrms (eg. Xamarin Forms for iOS and Xamarin Native for tvOS).

With the exception of FreshMVVM which is a Xamarin Forms first class citizen, you get the feeling that all the others supported Xamarin Forms as an afterthought because they were convceived before Xamarin Forms took off. MVVMCross seems to put more effort behind Xamarin Native but having use MVVMCross in a Xamarin Forms app, the support is very good too.

I think MVVMCross and Prism are great for enterprise applications because they guide you down a particular pattern. So its easy for a bunch of developers to follow the familiar pattern when working on multiple projects in an organisation that use MVVMCross or Prism consitently.

I think FreshMVVM is well thought out and easy to use, but what really puts me off completely is the prefix of everything with "Fresh"!

MVVMCross and MVVMLight have very high average downloads per day, but their history goes way back before Xamarin Forms became popular. So that would leave Prism as the highest downloads from a pure Xamarin Forms point of view.

MVVMLight and Caliburn.Micro only have one major contributor and suitable for light applications. Documenation is not that good or up to date.

Having used Caliburn.Micro in its hey dey with Windows Desktop and Windows Phone applications, it was quite revolutionary, with many people using it over MVVMLight because it had so many nifty features such as Auto Binding of Properties to visual elements if the element had the same name. That feature seems to have dropped off in the Xamarin version, probably for technical reasons. Caliburn.Micro's evolution seems to be the slowest which is sad given where its come from.

So which one should you use?

The cop out answer is "it depends", but it really does. If you have used MVVMCross, MVVMLight for Xamarin Native applications before (or Prism for native Windows applications) and are now using Xamarin Forms, it makes sense to continue to use what you're used to.

If you have no experience with any MVVM frameworks and you have a small app but want some of the nifty features of an MVVM framework, I would say FreshMVVM is a good choice.

But if you really wanted my opinion, considering all of the above and despite my bias toward MVVMCross, I would order them like this:

  1. MVVMCross
  2. Prism.Forms (use DryIOC or SimpleInjector IOC container)
  3. FreshMVVM
  4. MVVMLight
  5. Caliburn Micro

Resources

Framework Comparisons

IOC Container Performance Comparisons

Official Documentation

Official Samples

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].