Skip to content

onesteveo/MugenMvvmToolkit

 
 

Repository files navigation

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 Portable Class Libraries 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
  • Silverlight 5
  • Silverlight for WP8, WP8.1
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.Forms
  • WinRT XAML framework for Windows 8 Store apps

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

#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, Windows Phone, WinRT, Silverlight or PCL 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 WinRT and WP 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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 98.5%
  • Pascal 1.5%