-
Notifications
You must be signed in to change notification settings - Fork 0
MvvmCross Assemblies
The MvvmCross code is split into several different layers.
Each layer generally consists of a PCL and a platform specific part.
- PCL Support -
System.Net
,System.Windows
,System.Xml.Serialization
- these assemblies contains onlyType forwarding
assemblies which have enabled PCL to work on Android and iOS even without official Xamarin support. As official support is introduced, it is anticipated that these assemblies will be removed.
-
CrossCore - these assemblies contain common interfaces and implementations for cross-platform tools including:
- interfaces and implementations for the IoC container and for plugin loading
- some common platform abstractions (Visibility and Color)
- some interfaces and implementations for cross platform operations like value conversion, ui thread marshalling, and trace
- some helper methods - especially around weak reference subscription
- MvvmCross.Localization is a small standalone PCL library which provides some support for internationalisation classes. It should perhaps be part of the larger Binding layer, but is standalone so that it can be used in Windows platforms without them having to reference Binding.
-
Cirrious.MvvmCross.Binding - relying on CrossCore, this contains MvvmCross' binding implementation.
This binding layer is not included by default in the Windows stack as it's not needed if you are using built-in Xaml based binding, but it can be added to Windows through some
BindingEx
librariesThe platform-specific binding assemblies contain specialised data-enabled
UI controls
which provide databound text fields, buttons, lists, etc. -
MvvmCross - built on top of CrossCore, and also referencing
Binding
for the Xamarin platforms, this provides the Mvvm library itself. This includes:- implementations for MvxNotifyPropertyChanged and MvxViewModel
- implementations of ICommand
- a navigation service (implemented using shared
ShowViewModel
andChangePresentation
calls which are implemented on each platform usingPresenter
s -
setup
andglue
code for wiring an app together
-
CrossUI - these libraries are standalone (they don't depend on CrossCore) and are only availale for Android and iOS. They are largely contain just forks of the existing MonoTouch.Dialog and MonoDroid.Dialog code. The aim of these forks was to deliver inline-updating capabilities within Dialog
Element
s. -
MvvmCross.Dialog - these libraries are built on top of MvvmCross and CrossUI. They provide data-binding support on top of CrossUI.
-
MvvmCross.AutoViews - these libraries are an attempt to add some 'shared UI' across platforms - for an example of this see https://github.com/slodge/MvvmCross-Tutorials/tree/master/AutoViewExamples
Beyond these 'core libraries', a number of plugins are provided. For more on these, see Plugins.