All Projects → DevExpress → Devexpress.mvvm.free

DevExpress / Devexpress.mvvm.free

Licence: mit
DevExpress MVVM Framework is a set of components helping to work in the Model-View-ViewModel pattern in WPF.

DevExpress.Mvvm.Free

DevExpress MVVM Framework is a set of components that simplify the implementation of the Model-View-ViewModel pattern in WPF.

Documentation

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 the 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.

NuGet

The Free DevExpress MVVM Framework is available from NuGet.

Pull Requests

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 how to improve our MVVM Framework, please contact us via our support center.

Release Notes

20.2.3

  • T917390 - The IDelegateCommand and IAsyncCommand interfaces have been moved to the DevExpress.Mvvm namespace

20.1.6

  • T831750 - The PropertyManager class has been removed
  • T832854 - The IWindowService and ICurrentWindowService interfaces have been changed
  • T906028 - Make the BindableBase.SetProperty method virtual

19.2.3

  • DevExpress MVVM Framework now supports .NET Core 3.
  • T817657 - The IDispatcherService interface has been changed

18.2.3

  • 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.

18.1.3

  • 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 provides 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

16.2.3

  • 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.

16.1.4

15.2.5

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].