DevExpress MVVM Framework is a set of components that simplify the implementation of the Model-View-ViewModel pattern in WPF.
There are two versions of the DevExpress MVVM Framework:
- The DevExpress.Mvvm version is included in the DevExpress WPF component suite and designed for use with the DevExpress WPF controls.
- The DevExpress.Mvvm.Free version is designed for use with standard or third-party controls.
The DevExpress.Mvvm.Free version is a mirror of the DevExpress.Mvvm framework, so you can use the documentation for both versions.
Note that the free version of the framework is not compatible with the DevExpress WPF suite.
The Free DevExpress MVVM Framework is available from NuGet.
This repository mirrors the full version of the DevExpress MVVM framework included in DevExpress WPF installation packages. For this reason, we do not accept any pull requests to this repository. If you have an idea on how to improve our MVVM Framework, please contact us at our support center.
- DevExpress MVVM Framework now supports .NET 8.0 and .Net Framework 4.6.2.
- DevExpress MVVM Framework now supports .NET 6.0.
- The System.Data.SqlClient package version is updated from 4.6.0 to 4.8.6. Refer to the following link for more information on the security issue found in the 4.6.0 version: Microsoft.Data.SqlClient and System.Data.SqlClient vulnerable to SQL Data Provider Security Feature Bypass.
- Typo fixed (PR).
- Bug fixes and enhancements.
- T1079515 - The CompositeCommand and ConfirmationBehavior can work with commands that accept specific type arguments.
- Notification Service - You can use the optional Id parameter of the NotificationService.CreatePredefinedNotification method to identify the notification with which the user interacts.
- Module Manager - You can use our new
ModuleInjection.GetRegions
method to get all the regions from a particular ViewModel.
- DevExpress MVVM Framework now includes the IEventArgsTwoWayConverter interface. This interface allows you to define back conversion logic and return values from a command to an event. Refer to the following topic for more information: EventToCommand.
- T917390 - The IDelegateCommand and IAsyncCommand interfaces have been moved to the DevExpress.Mvvm namespace.
- T831750 - The PropertyManager class has been removed.
- T832854 - The IWindowService and ICurrentWindowService interfaces have been changed.
- T906028 - Make the BindableBase.SetProperty method virtual.
- DevExpress MVVM Framework now supports .NET Core 3.
- T817657 - The IDispatcherService interface has been changed.
- Async Commands Enhancements. Our POCO ViewModels and ViewModelBase descendants can now automatically generate Async Commands for methods marked with the async keyword. You can also reference your async method when invalidating an auto-generated Async Command.
[AsyncCommand(UseCommandManager = false)]
public async Task Calculate() {
for(int i = 0; i <= 100; i++) {
Progress = i;
await Task.Delay(20);
}
}
void UpdateCalculateCommand() {
this.RaiseCanExecuteChanged(x => x.Calculate());
}
-
Dynamic Binding Converters - New API. The new DelegateConverterFactory class provides a set of functions to create IValueConverter and IMutliValueConverter instances based on passed delegates.
-
Both the BindableBase and ViewModelBase classes now offer a more simplified syntax for getters and setters:
public string FullName {
get { return GetValue<string>(); }
set { SetValue(value, OnFullNameChanged); }
}
string fullName;
public string FullName {
get { return fullName; }
set { SetValue(ref fullName, value, OnFullNameChanged); }
}
- CompositeCommandBehavior - our new CanExecuteCondition property specifies whether the command target should be disabled when the CanExecute method of one of the commands returns true.
- BC4250 - The DXBinding, DXEvent, and DXCommand extensions use a new expression evaluation engine by default. Expressions are now initialized up to 2 times faster. The new Expression Evaluation Engine includes the following features:
- Dynamic Typing
- No casting is required to compare or return values
- Ability to create objects using the ‘new’ operator
- Ability to assign values using the equals (=) operator in DXCommand and DXEvent
- New Module Injection Framework (MIF). MIF makes it easier to develop, test, maintain, and deploy modular applications built with loosely coupled modules. The frameworks's key features include:
- Automatic persistence of the application's logical state and layout.
- Code separation into logical modules coupled with straightforward navigation.
- Unit Testing.
- The UWP platform is no longer supported. If UWP is required, use the NuGet package version 15.2.5.
- The Silverlight platform is no longer supported. If Silverlight is required, use the nuget package version 15.1.4.