Giter Site home page Giter Site logo

MugenMvvmToolkit


Mugen MVVM Toolkit makes it easier to develop cross-platform application using the Model-View-ViewModel design pattern. The Mugen MVVM Toolkit makes extensive use of Net Standard Library to provide maintainable cross platform C# native applications. The Mugen MVVM Toolkit provides a cross-platform MVVM development framework built on top of:

  • WinForms
  • WPF
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.Forms
  • UWP

Questions & support

We have a group on Slack where we will be glad to answer your questions.

Documentation

Please chek out MugenMvvmToolkit documentation.

Links

Features

The MVVM framework includes the following features that differs this project from other frameworks:

  • Deep integration with each platform.
  • Supports state preservation and restoration for mobile platforms.
  • Full Fragment support for Android, you do not need to worry about activity, fragments, sub-fragments or their state all this makes the framework.
  • Solves the nested user controls problem in MVVM, all view models are dynamically created by you, using the GetViewModel and GetViewModel<TViewModel> methods and you do not need to use the ViewModelLocator.
  • Supports all kinds of navigation like modal window, page navigation, tab navigation, back stack fragment navigation for android. You can also easily add a new kind of navigation.
  • Navigation system works with view models and allows to expect the completion of the operation. You can pass any parameters between view models.

Installation

Under Visual Studio you can use NuGet Package Manager to get MugenMvvmToolkit.

To start developing under iOS, Android, UWP platforms use:

PM> Install-Package MugenMvvmToolkit.StarterPack

To start developing under WPF use:

PM> Install-Package MugenMvvmToolkit.StarterPack.WPF

To start developing under Windows Forms use:

PM> Install-Package MugenMvvmToolkit.StarterPack.WinForms

Navigation example

An example of how the navigation looks in other frameworks:

Navigate<DetailViewModel>(new DetailParameters() { Index = 2 });

An example of how the navigation looks in MugenMvvmToolkit:

using (var editorVm = GetViewModel<ProductEditorViewModel>())            
{
   var productModel = new ProductModel { Id = Guid.NewGuid() };
   editorVm.InitializeEntity(productModel, true);
   if (!await editorVm.ShowAsync())
	   return;
   //Code that will be called after the completion of navigation, and yes, this code will be executed even if the application had been tombstoned and then restored.
}

For UWP you should install the MugenMvvmToolkit.Fody plugin to support async operation restore.

  • Good design mode support, for xaml platforms supports the creation of design view model with any constructor parameters.
  • Supports bindings on all platforms, all of the native binding features available for WPF platform available on all platforms and even more.
  • Binding supports C# language expressions like Linq, Extension methods, method call, ternary operator (?:), coalescing operator (??), null conditional operator (?.) etc. (Text Items.First(x => x == Name).Value), (Text $string.Format('{0} {1}', Prop1, Prop2)).
  • Supports subscription to any control event. (TextChanged ViewModelMethod($args)), (DoubleClick Command).
  • Built-in support for validation. (Text Prop1, Validate=True), (Text $GetErrors(Prop1).FirstOrDefault())
  • You can easily write their own extensions for bindings. (Text $i18.MyLocalizableString), (Text $MyCustomMethod(Prop1)).
  • Supports attached members (properties, events, methods), you can extend any object as you want.
  • Special editor for WinForms, you do not need to write code to create bindings.
  • Binding parser builds syntax tree that allows you to easily change or extend the bindings, without manipulation of the raw text.
  • Binding supports fluent syntax.
  • Excellent binding performance.

mugenmvvmtoolkit's Projects

mugenmvvmtoolkit.fody icon mugenmvvmtoolkit.fody

Fody add-in that adds the ability to save the state of asynchronous tasks for WP and WinRT platforms.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.