Intuitive MVVM Pattern Support across all WPF Components

All DevExpress controls are fully compatible with the model

view ViewModel architecture.

Office-inspired WPF Application | DevExpress

  1. Generate Columns from a Collection
    • XAML
                                <dxg:GridControl ColumnsSource="{Binding GridColumns}"/>
    
  2. Bind the Focused Row to Your View Model Property
    • XAML
                                <dxg:GridControl CurrentItem="{Binding SelectedEmployee}"/>
    
  3. Use Built-in Commands Instead of Events
    • XAML
                                <dxg:GridControl>
                                    <dxg:GridControl.View>
                                        <dxg:TableView
                                            ValidateRowCommand="{Binding ValidateEmployeeCommand}"/>
                                    </dxg:GridControl.View>
                                </dxg:GridControl>
    
  4. Generate Summaries from a Collection within Your View Model
    • XAML
                                <dxg:GridControl TotalSummarySource="{Binding TotalSummaryItems}"/>
    
  5. Configure Columns and Editors Using Attributes
    • C#
                                public class Employee {
                                    [DateTimeMask(Mask = "MMMM/dd/yyyy")]
                                    public DateTime HiredAt {
                                        get;
                                        set;
                                    }
                                }
    

Even Simpler with the DevExpress MVVM Framework

Eliminate mundane tasks and accelerate development with our

powerhouse MVVM framework.

MVVM C# Code Generator
Automatic INotifyPropertyChanged and command implementation.

  • C#
                                // User Class

                                [GenerateViewModel]
                                partial class ViewModel {
                                
                                    [GenerateProperty]
                                    string username;

                                    [GenerateCommand]
                                    void Login() => Status = "User: " + Username;
                                    
                                    bool CanLogin() => !string.IsNullOrEmpty(Username);
                                    
                                }



                                
  • C#
                                // Generated Class

                                partial class ViewModel : INotifyPropertyChanged {
                                  public string? Username {
                                    get => username;
                                    set {
                                      if(EqualityComparer<string?>.Default.Equals(username, value))
                                         return;
                                      username = value;
                                      RaisePropertyChanged(UsernameChangedEventArgs);
                                    }
                                  }
                                  DelegateCommand? loginCommand;
                                  public DelegateCommand LoginCommand {
                                   get => loginCommand ??= new DelegateCommand(Login,CanLogin,true);
                                  }
                                }
                                

Messenger
No direct references are required.

  • C#
                                // Direct View Model references

                                public class ViewModelA {
                                    ViewModelB viewModelB;
                                    public ViewModelA(ViewModelB viewModelB) {
                                        this.viewModelB = viewModelB;
                                    }
                                    void SendMessageToViewModelB(string parameter) {
                                        viewModelB.SaveData(parameter);
                                    }
                                }
                                public class ViewModelB {
                                    public void SaveData(string parameter) {
                                    //...
                                    }
                                }
                                
  • C#
                                // DX Messenger

                                public class ViewModelA {
                                    void SendMessageToViewModelB(string parameter) {
                                        Messenger.Default.Send<string>(parameter);
                                    }
                                }

                                public class ViewModelB {
                                    public ViewModelB() {
                                        Messenger.Default.Register<string>(this, SaveData);
                                    }
                                    public void SaveData(string parameter) {
                                        MessageBox.Show("ViewModelB data was saved!");
                                    }
                                }
                                

DXBinding
Advanced binding with flexible syntax.

  • XAML
                                <!-- Standard Binding -->

                                <TextBlock>
                                    <TextBlock.Text>
                                        <MultiBinding Converter="{CustomConverter}">
                                            <Binding Path="PropA"/>
                                            <Binding Path="PropB"/>
                                        </MultiBinding>
                                    </TextBlock.Text>
                                </TextBlock>
                                
  • XAML
                                <!-- DXBinding -->

                                <TextBlock Text="{DXBinding 'PropA+PropB'}"/>







                                

Built-in Converters
Ready-to-use converters for various usage scenarios.

  • C#
                                // Custom Converter

                                public class MyBooleanToVisibilityConverter : IValueConverter {
                                    public object Convert(object value, Type targetType,
                                           object parameter, CultureInfo culture) {
                                       bool isVisible = value is bool && (bool)value;
                                       return isVisible ? Visibility.Visible : Visibility.Collapsed;
                                    }
                                    //...
                                }
                                
  • XAML
                                <!-- Ready-to-Use Converter -->

                                <Button Visibility="{
                                    Binding ShowButton,
                                    Converter={dxmvvm:BooleanToVisibilityConverter}}"/>





                                

Seamless ViewModel –

Control Communication with Services

Code behind no longer necessary.

MVVM C# Code Generator - UI for WPF | DevExpress

Modular MVVM Application
with Clean Architecture

Build well-structured WPF applications
with dynamic modules.

  • Our Module Injection Framework (MIF) supports regions, modules, navigation, and state serialization.

  • PRISM adapters for DevExpress controls
    (Docking, TabControl, NavigationFrame, NavBarControl)

Modular MVVM application with clean architecture - UI for WPF | DevExpress

Start your free 30-day trial today!

Download our fully-functional 30-day trial today and
experience the DevExpress difference today.

 

Download Free Trial

Buy this product as part of the following subscription packages.

We are so confident in our products and services that we back them with a 60 day no questions asked money back guarantee. If within the first 60 days of ownership you are not satisfied with the capabilities of our tools, you can request a full refund of the amount you paid to DevExpress by writing to clientservices@devexpress.com or by calling +1 (818) 844-3383.

Best Value
WinForms Controls
WPF Controls
TreeView
Sunburst
ASP.NET Web Forms Controls
Printing & Exporting
ASP.NET MVC Extensions
Printing & Exporting
ASP.NET MVC Client-Side Controls
ASP.NET Core Controls
ASP.NET Core Office Controls
ASP.NET Bootstrap Controls
Themes and Skinning
JavaScript - jQuery, Angular, React, Vue
Blazor UI Components
Grid Layout
Stack Layout
UWP Controls
Reporting
WinForms Document Viewer
WinForms End-User Report Designer
ASP.NET Web Forms Document Viewer
ASP.NET Web Forms End-User Report Designer
ASP.NET MVC Document Viewer
ASP.NET MVC End-User Report Designer
ASP.NET Core Document Viewer
ASP.NET Core End-User Report Designer
Blazor Document Viewer
Blazor End-User Report Designer
WPF Document Viewer
WPF End-User Report Designer
Angular Document Viewer
Angular End-User Report Designer
XPO - ORM Library
Office File API (Basic)
.NET Standard 2.0+ Support (Windows, Linux, MacOS)
Office File API (Complete)
.NET Standard 2.0+ Support (Windows, Linux, MacOS)
Business Intelligence Dashboard
XAF - Cross-Platform .NET App UI
Role-based Access Control and User Authentication (.NET)
Xamarin.Forms UI Controls with Support
Native Mobile UI Controls
CodeRush with Support
C#, VB.NET, XAML
CodeRush Classic
VS 2015 Support
VS 2012, 2013 Support
C#, VB.NET, XAML
HTML, ASP.NET, CSS, Razor, JavaScript
Source Code *
WinForms Controls
ASP.NET Controls
WPF Controls
JavaScript - jQuery, Angular, React
Blazor UI Components
UWP Controls
XPO - ORM Library
Office File API
Data Visualization Dashboard
XAF - Cross-Platform .NET App UI
Technical Support
Priority Support

* DevExpress does not include/ship source code for certain products, including CodeRush, TestCafe Studio, and Report & Dashboard Server.

Additional Info

WPF Themes and App Skins

The DevExpress WPF Subscription ships with over 30 custom designed and highly polished themes for your next WPF application. You can use each of these themes easily, without modification or manipulate them using our free WPF Theme Designer application. Learn More

Touch Enabled User Experience

Deliver elegant, touch-enabled WPF applications using the platform you know and love. The WPF Subscription helps you leverage your current investments and address customer needs via a comprehensive range of WPF controls that support touch on both Windows 7 and Windows 10.

Sec 508 and Accessibility

The DevExpress WPF Subscription makes it easy to create WPF applications that meet government regulations regarding web accessibility. Sec 508 and Accessibility Guidelines 1.0 support is available for key DevExpress WPF controls. Learn More

Straightforward Localization

All DevExpress WPF controls can be easily localized using satellite resource assemblies. DevExpress delivers satellite assemblies for a large variety of languages and cultures. To make it easy to get started, resource files for four cultures are included to our installation: German, Japanese, Russian, and Spanish. If you need to modify our shipping resources or create satellite assemblies for a different language, simply use our Online Localization Service, a free tool for our active WPF subscribers. Online Localization Service

MVVM Support

DevExpress WPF Controls have been engineered to support the Model-View-ViewModel development pattern. Controls such as the DevExpress WPF Grid provide the same level of MVVM support as the standard Microsoft Data Grid along with additional features not available from Microsoft. DevExpress controls allow you to generate columns based on data and customize them using WPF styles without limitations. Learn more

Supported IDEs

Review the list of development tools and frameworks supported by our products. We strongly recommend that you always download and use the most recent versions. If the latest version does not support the IDE or framework that you're using, please write to us at support@devexpress.com and request the an evaluation version that suits your requirements.

Versions
21.1.6
18.1.16
9.3.7
Release Date
30-September-2021
29-April-2021
15-October-2010
Supported Frameworks
.NET Core 3.0+
.NET Framework 4.5.2+
.NET Framework 4.0+
.NET Framework 3.5
Supported IDE
Visual Studio 2019
Visual Studio 2017
Visual Studio 2015
Visual Studio 2013
Visual Studio 2012
Visual Studio 2019
Visual Studio 2017
Visual Studio 2015
Visual Studio 2013
Visual Studio 2012
Visual Studio 2010
Visual Studio 2008
Visual Studio 2005

Best in Class Tools

DevExpress is honored to have been voted best in class 20 times in this year's Visual Studio Magazine Reader's Choice Awards.

Experience the DevExpress difference and see why your peers consistently vote our products #1. With our Universal Subscription, you will build your best, see complex software with greater clarity, increase your productivity and create stunning applications for Windows, Web and your Mobile world.

x20
x18
x19
x19