The MVVM Helper + Behavior library is a set of classes for WPF developers to help them build Model-View-ViewModel oriented applications. It includes some useful WPF classes, a base framework for MVVM and a bunch of Blend behaviors, triggers and actions.
There are several examples available at http://www.julmar.com/blog/mark
where I've been blogging on how to use this library. I'll push some of that information up here as well.
You can install MVVMHelpers through NuGet http://www.nuget.org
- just search for MVVMHelpers, it will add the latest version into your project automatically from within Visual Studio if you install the NuGet plug-in.
Alternatively, you can type the following into the Package Manager console to add it to your project:PM> Install-Package MVVMHelpers
orPM> Install-Package Install-Package MVVMHelpers.Metro
for the Windows 8 Metro version.1.08 5/2013
- Added SynchronizedCollectionBehavior (ported from WPF version) (see http://julmar.com/blog/mark/?p=274)
- Added new AutoSerializingPageNavigator (see http://julmar.com/blog/mark/?p=265)
- Added support to replace Imports using ServiceLocator
- Fix for EventCommander - it was broken during refactoring.
- Fixes to reattach event handlers from EventTrigger when UIElement is unloaded/loaded multiple times.
- Fixes for PageNavigator/StateManager
- Expose KnownTypes on IStateManager
- Allow persistence even when objects do not participate in INavigateAware
- Refactored code to share persistence on suspend + navigation.
- Minor bug fixes
- Added Flyout control and IFlyoutVisualizer
- Integrated StateManager into PageNavigator and abstracted with IStateManager
- Added support to locate ViewModels through attached property (still supports dictionary)
- Added support to provide custom serialization on a ViewModel by implementing
1.03 for Windows 8 RTM
- Modified ViewModelTrigger to support Action and Action<T>
- Added static Designer class to port WPF code
- IViewModelLocator moved to JulMar.Windows.Interfaces (instead of Core)
- Added InDesignMode property to SimpleViewModel
- Removed dead code from ViewModelLocator
- Fixed MessageMediator to properly return true/false when targets have been collected
- Changed MessageMediator back to public type so it can be used multiple times
- Changed ServiceProvider implementation class from public to internal.
- Moved MessageVisualizerOptions to JulMar.Windows.UI (was in interfaces)
- Updated some unit tests
1.02 for Windows 8 RTM
- Fixed a bug in the ViewModelLocator when back-navigation occurs
- Removed the public ViewModelLocator breaking change. Use IViewModelLocator interface instead
- Added ViewModelLocatorResource for binding in XAML
- Added ServiceLocatorResource for binding services in XAML
- Added unit tests and new test program
1.01 for Windows 8 RTM
- Added NameScopeBinding to allow ElementName binding to attached collection items
- Changed InvokeAction to pass trigger parameter if CommandParameter is null.
- Ported ViewModelLocator and most of MVVMHelpers 4.10
- Ported Blend behavior support
- Refactored some of the services to be more inline with the internal metro/Win8 version.
- Merged .NET 3.5/4.0 set together
- Added check in SynchronizedScrollingBehavior to disable scrolling if scrollbar is disabled.
- Added ability to turn off drag adorner for ItemsControlDragDropBehavior
- Added ServiceReplacement test project + unit tests from blog
- Fixes for EditingViewModel, also extended with more interception hooks.
- Modified DeferredBinder to support 2-way bindings
- Added back in support for multiple ExportUIVisualizer and ExportViewModel attributes
- Removed IDynamicResolver interface, renamed MefComposer to DynamicComposer. You should just use DynamicComposer.Instance as the library is now too dependent on MEF to really change the composition model.
- Added ListViewColumnAutoSizeBehavior to provide Grid-like column sizing (Auto,*,##)
- Modified ListViewSortBehavior to correct crash when adorner layer is not present.
- Fixed bug in ValidationManager when traversing properties and potentially getting into infinite loop
- Added MouseGestureScrollViewerBehavior to support iPad-like gestures with mouse on ScrollViewer elements (with inertia)
- Added test projects for DeferredBinder, multiple export attributes, ListViewColumnAutoSizeBehavior and MouseGestureScrollViewerBehavior