WinForms Controls v21.1

New MongoDB Data Source

Our Data Source Configuration Wizard allows you to connect and retrieve data from a MongoDB database. The MongoDB data source allows you to select the desired database name, document collection name, and define the appropriate server-side filtering clause.

Data Grid

Search Boxes within Column Headers

Column headers can now display search boxes. Users can click a search icon and enter filter criteria within column headers.

 

earch Boxes within Column Headers - WinForms Data Grid | DevExpress

Examples search expressions:

  • 'mail' (searches for 'mail' using the Contains function)
  • '=Ford, BMW, Audi' (selects rows that contain any of these values)
  • '=10' (exact match)
  • '>100', '<2.5' (numeric value comparison)
  • '[3:7]' (a range of values)

Set the 'InHeaderSearchMode' property to 'GridInHeaderSearchMode.TextFilter' to enable this feature. In this mode, the Ctrl+F shortcut activates the in-header search box for the focused column.

TileView - Conditional Formatting

Our Tile View now offers Conditional Formatting support. You can highlight tiles and individual tile elements (fields) based on specified criteria without writing a single line of code. Tiles can be highlighted using icons and predefined color scales.

Filter Panel - MRU Filters

Our Filter Panel displays separate tokens with filters for each column. In v21.1, we incorporated our MRU filter list (most recently used filters) and enabled the new Filter Panel by default.

Filter Panel - MRU Filters, WinForms Data Grid | DevExpress

Filter Editor - Custom Expressions

Custom expressions that cannot be converted into Filter Editor nodes are now displayed within text fields. This ensures no expressions are lost. End-users can add custom expressions at runtime using a context menu.

Filter Editor - Custom Expressions, WinForms UI | DevExpress

Unbound Column Enhancements

You can now explicitly set an unbound column type. You can also specify previously unavailable types, such as TimeSpan or DateTimeOffset.

  • C#
var tsColumn = gridView1.Columns.AddVisible("TimeSpan");
tsColumn.UnboundDataType = typeof(TimeSpan);

New Appearance Options for Detail Tabs

Our new DetailTabStyle event allows you to customize captions, images, colors, and font settings for detail tabs.

Appearance Options for Detail Tabs - WinForms Data Grid | DevExpress

  • C#
void OnDetailTabStyle(object sender, DetailTabStyleEventArgs e) {
    if(e.Caption == "ACCOUNTS") {
        e.Appearance.Header.ForeColor = System.Drawing.Color.Green;
        e.ImageOptions.SvgImage = svgImageCollection1[0];
    }
    if(e.Caption == "GUNS") {
        e.Appearance.Header.ForeColor = System.Drawing.Color.Red;
        e.ImageOptions.SvgImage = svgImageCollection1[1];
    }
    if(e.IsSelected) {
        e.PatternView.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
        e.Caption = "[" + e.Caption + "]";
    }
}

We have also added a 'RefreshDetailTab(rowHandle)' method to update detail tabs at runtime.

And yes, you can enable the 'OptionsView.AllowHtmlDrawDetailTabs' option to use HTML-inspired tags.

  • C#
gridView1.OptionsView.AllowHtmlDrawDetailTabs = true;

Charting

Memory Optimization and New Data Adapters

With this release, our WinForms Chart Control allocates less memory when used in data bound mode. This enhancement has allowed us to increase the maximum number of visible data points for x86 apps without significant performance degradation (up to 20M). Documentation

Memory Optimization - WinForms Chart Control | DevExpress

Note: Our new data adapters (ISeriesAdapter, ISeriesTemplateAdapter) allow you to process complex data structures much faster. And yes, you can also implement a custom data adapter to process data as needed.

Performance Optimization - WinForms Chart Control | DevExpress

Diagram

Diagram Designer Enhancements

Our WinForms Diagram Designer ships with the following new features/capabilities:

  • Redesigned Shapes Panel
  • Lightweight Docking Support
  • Scrollbars Optimized for Touch Apps

WinForms Diagram Designer | DevExpress

Editors

Output Data Type for Numeric Masks

You can now specify the output data type for an editor with a numeric mask. When a user enters values within the edit box, the data editor converts the input string to the output data type and assigns the result to the EditValue property.

Use the 'ValueType' property to specify the desired output data type.

End-Users can Change Mask Settings

Our new 'EditMaskSettings' method displays the DevExpress "Mask Settings" dialog at runtime. This dialog allows end-users to modify mask options as needs dictate.

  • C#
textEdit.Properties.EditMaskSettings();

You can also use the new 'MaskSettings.Save' and 'MaskSettings.Restore' methods to persist and load mask settings when necessary.

  • C#
//save and restore from a local variable
var state = textEdit1.Properties.MaskSettings.Save();
textEdit2.Properties.MaskSettings.Restore(state);
//save and restore from a stream
textEdit1.Properties.MaskSettings.Save(myStream);
textEdit2.Properties.MaskSettings.Restore(myStream);

Highlight Text

Our new 'CustomHighlightText' event allows you to highlight both individual words and a word range. To use this new option, you must activate our WinForms Text Editor's Advanced Mode.

Highlight Text - WinForms Editors | DevExpress

Gantt Control

Enhanced Printing

This release includes an overhauled WinForms Gantt print engine. We eliminated issues such as blurry content (noticeable when users zoom into a printed document) and performance degradation when using large zoom factors.

We also added support for various print-related options and appearance settings available in other DevExpress WinForms controls. Documentation

Printing - WinForms Gantt | DevExpress

Advanced Automatic Scheduling Settings

Our WinForms Gantt control now supports task constraints. These constraints allow a user to limit a task's start or finish date to a specific date or date range. Task constraint options include:

  • As Soon As Possible
  • As Late As Possible
  • Start No Earlier Than
  • Start No Later Than
  • Finish No Earlier Than
  • Finish No Later Than
  • Must Start On
  • Must Finish On

Task constraints can be set if the data source contains corresponding data fields. Use our new ConstraintTypeFieldName and ConstraintDateFieldName properties to specify data field names. Documentation

Map Control

Custom Start/End Caps for MapLine and MapPolyline

MapLine, MapPolyline, and MapSpline vector items now include 'StartLineCap' and 'EndLineCap' properties. These properties allow you to display a custom shape at the beginning and at the end of each vector element.

Custom Start/End Caps for MapLine and MapPolyline - Map Control | DevExpress

Restrict Map Panning to an Area

You can now retain user focus on a specific region and prevent them from moving out of that area. Use our new 'MapControl.ScrollArea' property, to limit user access to map areas. Documentation

Colorizer for MapLine, MapPolyline, MapSpline

Colorizers can be applied to the following map vector items: MapLine, MapPolyline, and MapSpline. Once calculated, the color is assigned to the line's Stroke property.

Bing Maps - New Map Types and GIS Providers

Our BingMapDataProvider supports the following new map types: RoadGray, RoadLight, RoadDark.

BingMap Types - WinForms Map | DevExpress

We also added a new BingMapDataProvider.TopLayer property to set the display layer that renders atop the imagery set (BaseMap, Background, Foreground, TrafficFlow).

New GIS providers include:

  • BingTrafficIncidentDataProvider - Displays pushpins with traffic incident information.
  • BingRouteIsochroneDataProvider - Generates a semi-transparent polygon with a pushpin to visualize the distance reachable from a given location, and supports driving and walking modes.

BingRouteDataProvider also offers two new route optimization options: MinimizeTimeWithTraffic and MinimizeTimeAvoidClosure. Its new OptimizeWaypoints property rearranges route waypoints and reduces route cost.

Bing Route Isochrone Data Provider - WinForms Map | DevExpress

PDF Viewer

Printing Enhancements

We improved our DirectX printing engine so that documents are printed faster, with a smaller print job size.

For backward compatibility, use the 'PdfPrinterSettings.PrintTextAsOutlines' option.

Printing - WinForms PDF Viewer | DevExpress

Pivot Grid

Async Data Processing Enhancements

DevExpress Pivot Grid can now invoke multiple operations in a background thread. We've also enhanced our asynchronous API to return the Task<> object, so you can leverage the 'await' operator.

  • C#
await pivotGridControl.EndUpdateAsync();
await fieldCategory.ExpandAllAsync();
await pivotGridControl.ExpandValueAsync(true, new object[] { 2005 });
pivotGridControl.BestFitRowArea();

Ribbon, Bars, Docking

Ribbon - Empty Area Image

Our WinForms Ribbon can now display an image within its empty/unused regions. Use the EmptyAreaImageOptions property to specify image settings.

The 'ImageAlignment' and 'ImagePadding' properties specify image alignment and padding respectively.

Document Manager – Restore Hidden/Closed Documents

When you load a document layout, the new 'QueryDocument' event allows you to easily restore/re-create documents that are no longer available in the current View.

Rich Text Editor

Charts (CTP)

Our WinForms Rich Text Editor can now display, print, and export (to PDF) documents with charts. Documentation

Charts - WinForms Rich Text Editor | DevExpress

RC4 CryptoAPI Encryption

Our Word Processing Document API and Rich Text Editors (for WinForms and WPF) can import and export RC4 CryptoAPI encrypted DOC files. RC4 CryptoAPI is now the default encryption method for binary files if you use the Strong encryption type to encrypt your documents.

Repeat Row as Header

We added a new table row option - "Repeat as header row at the top of each page". Documentation

Repeat Row as Header - Rich Text Editor | DevExpress

Watermarks

Our WinForms Rich Text Editor allows you to import and export documents with watermarks. Watermarks are displayed, printed, and exported to PDF. New API allows you to insert picture and text watermarks, specify watermark options, or remove existing watermarks from a document. Documentation

Watermarks - WinForms Rich Text Editor | DevExpress

ActiveX Controls

Our new API allows you to access ActiveX controls in code, obtain associated properties (type, name, and ProgID), and remove these controls from a document when necessary.

Sankey Diagram

Selection

Users can now select diagram nodes and links. Our Sankey Diagram control supports the following selection modes:

  • Single
  • Multiple
  • Extended (a combination of single and multiple selection modes)

Use the 'SankeyDiagram.SelectionMode' property to specify a desired selection mode. Documentation

Selection - WinForms Sankey Diagram | DevExpress

Layout Customization

Our Sankey Diagram now supports a linear layout algorithm. Use the 'SankeyDiagramControl.LayoutAlgorithm' property to customize node positioning:

  • ResolveOverlapping - Automatically repositions nodes to avoid link overlap.
  • NodeAlignment - Aligns all nodes: top, center, or bottom.

Resolve Node Overlap - WinForms Sankey Diagram | DevExpress

You can also implement a custom layout algorithm by deriving from 'SankeyLinearLayoutAlgorithm' or 'SankeyLayoutAlgorithmBase'.

Scheduler

Modern Outlook-inspired UI Elements

We updated our Scheduler's interface to better replicate UI elements introduced in the most recent version of Microsoft Outlook.

  • Time Ruler now features label text settings and minor tickmark styles.
  • 'More' buttons are now displayed inside every day column. You do not need to enable the ShowMoreButtonsOnEachColumn option. 'More' buttons display the appointment counter.
  • The current day column is now highlighted.
  • We updated the appearance of the Scheduler's current time indicator. The 'TimeIndicatorDisplayOptions.Visibility' property is now set to 'DaysBeforeToday' by default.

Scheduler and Calendar for WinForms | DevExpress

Day-Column Auto Width

Day, Work Week, and Full Week Views now support an auto column width option. Set the new ColumnWidthMode property to 'Auto' to activate day-column auto width.

You can also handle the CustomDayViewColumnWidth event to manually specify column width.

Appointment Min/Max Height

You can now specify an appointment's minimum and maximum allowed height in auto-height mode.

  • Use the 'AppointmentMinHeight' and 'AppointmentMaxHeight' properties in Month, Timeline, and Gantt Views.
  • Use the 'AllDayAppointmentMinHeight' and 'AllDayAppointmentMaxHeight' properties in Day, Work Week, and Full Week Views.

Skins and Vector Icons

New High Contrast Skin

Our new vector High Contrast Skin uses Windows colors specified via the "Personalize | High contrast settings" menu.

The High Contrast Skin is automatically activated once you enable the High Contrast Windows theme. To turn off automatic skin activation, disable the WindowsFormsSettings.TrackSystemHighContrastMode option.

High Contrast Skin for WinForms UI | DevExpress

 

And yes, our vector High Contrast Skin includes multiple color palettes.

High Contrast Skin for WinForms UI | DevExpress

Skin Patches

With our new skin patch support, you can make slight modifications to a standard DevExpress skin without duplicating the skin. A skin patch is a list of visual changes applied directly to a standard DevExpress Skin. Skin patches eliminate the need to generate/import custom skins for your project(s). See how it works

Spreadsheet

RC4 CryptoAPI Encryption

Our Spreadsheet Document API and WinForms/WPF Spreadsheet controls can import and export RC4 CryptoAPI encrypted XLS files. RC4 CryptoAPI is now the default encryption method for binary files if you use the Strong encryption type to encrypt your documents.

Progress Indication

Our Spreadsheet control can now indicate the progress of lengthy operations (file load/save operations, and export to PDF/HTML).

Implement an 'IProgressIndicationService' interface to create a custom progress indicator as needs dictate.

Progress Indication - WinForms Spreadsheet Control | DevExpress

Accounting Number Alignment

If you apply the Accounting number format to a cell value, our Spreadsheet displays the currency symbol on the left and numbers on the right.

WinForms Spreadsheet Control - Accounting Format Alignment | DevExpress

Excel 2016 Charts – Enhancements

With this release, our Spreadsheet control adds new UI elements designed to insert Excel 2016 charts and change chart types. Documentation

WinForms Spreadsheet - Chart UI | DevExpress

Our Spreadsheet control can now render, print, and export (to PDF) Sunburst and Treemap charts.

WinForms Spreadsheet - Sunburst and Treemap Charts | DevExpress

Document Themes API

You can now access and modify document theme in code. Load a custom theme from a THMX file or customize predefined theme colors as needed.

Image Replacement

Use our new 'Picture.ChangeImage' method to replace an existing worksheet image with a different image. You can specify whether to retain the size of the original image or use new image attributes (size and proportions).

Sunburst and TreeMap

Legend and Titles

DevExpress Tree Map and Sunburst controls can now display legend and title elements. Use the following properties to enable and customize legends and titles as necessary:

  • HierarchicalChartControlBase.Legend
  • HierarchicalChartControlBase.Titles

Sunburst and TreeMap for WinForms | DevExpress

TreeList

Unbound Column Enhancements

You can now explicitly set an unbound column type. You can also specify previously unavailable types, such as TimeSpan or DateTimeOffset.

  • C#
var tsColumn = treeList1.Columns.AddVisible("TimeSpan");
tsColumn.UnboundDataType = typeof(TimeSpan);

Filter Editor - Custom Expressions

Custom expressions that cannot be converted into Filter Editor nodes are now displayed within text fields. This ensures no expressions are lost. End-users can add custom expressions at runtime using a context menu.

Filter Editor - Custom Expressions, WinForms UI | DevExpress

Vertical Grid

Property Grid - Sort and Categorize Buttons

Our WinForms Property Grid control now supports a Visual Studio-inspired properties toolbar. The toolbar displays a search box and buttons to sort and categorize grid rows. You can use the Property Grid control's smart tag menu to create the toolbar. Documentation

WinForms Property Grid | DevExpress

Conditional Formatting

Our WinForms Vertical Grid supports Excel-inspired Conditional Formatting. You can easily highlight cells or rows based on specified criteria without writing a single line of code. Cells and rows can be highlighted using icons and predefined color scales. Users can easily apply/customize style conditions via the grid's popup menu.

Conditional Formatting - WinForms Vertical Grid | DevExpress

Data Sorting

Our WinForms Vertical Grid now supports sorting against an unlimited number of rows. Use the AllowSort property to enable/disable data sorting as needs dictate. Documentation

Data Sorting - WinForms Vertical Grid | DevExpress

Filter Editor - Custom Expressions

Custom expressions that cannot be converted into Filter Editor nodes are now displayed within text fields. This ensures no expressions are lost. End-users can add custom expressions at runtime using a context menu.

Unbound Column Enhancements

You can now explicitly set an unbound column type. You can also specify previously unavailable types, such as TimeSpan or DateTimeOffset.

  • C#
var tsRowProps = vGridControl.Rows.AddEditorRow("TimeSpan").Properties;
tsRowProps.UnboundDataType = typeof(string);

RDP Optimization

We've optimized our WinForms product line so that individual controls execute more efficiently in remote usage scenarios (even at low connection speeds).

DX Template Gallery - .NET Core Support

The DevExpress Template Gallery now includes WinForms and WPF project templates designed for .NET Core.

Miscellaneous

Image Picker - Custom Images

The DevExpress Image Picker now features a Browse tab and allows you to directly add images from disk to controls on a form.

 

WinForms Image Picker - Custom Images | DevExpress

New Barcodes - Identcode and Leitcode

v21.1 extends our barcode library with two new barcode types: Deutsche Post Identcode and Leitcode.

  • Deutsche Post Identcode
  • Deutsche Post Leitcode

Use our new 'DeutschePostIdentcodeGenerator' and 'DeutschePostLeitcodeGenerator' classes to generate Deutsche Post Identcode and Deutsche Post Leitcode barcodes at runtime.

Identcode and Leitcode - DevExpress Reporting

Accordion – Stretch a Container

Much like our NavBar's SideBar View, containers in our Accordion control can now stretch and span entire control height.

SVG Loading - Performance Enhancements

We overhauled our internal SVG image parser and reduced SVG image load time by 31%. We also optimized memory use and reduced consumption by up to 45%.

WPF Controls v21.1

.NET Core & .NET 5

XAML Designer - Suggested Actions

Suggested Actions are now available in Visual Studio Preview builds and include the following new features:

  • Support for non-visual elements (Toolbar & Ribbon items, Data Grid columns)
  • Support for nested elements (for example, TableView options are now available from GridControl)
  • New Property Editors
  • Appearance Tab

XAML Designer - Suggested Actions, WPF UI | DevExpress

XAML Designer – Image Gallery

The DevExpress Image Gallery is now available for .NET Core and .NET 5. The Image Gallery includes thousands of high-quality raster and vector icons (SVG). The gallery can be accessed via Suggested Actions, the Properties window, and Visual Studio's main menu.

XAML Designer – Image Gallery, WPF UI | DevExpress

MVVM

Compile-Time ViewModel Generation

This feature uses C# Source Generators introduced in .NET 5 to generate boilerplate code for your ViewModels at compile time. Command declarations, property change notifications, IDataErrorInfo implementation, and service support will be automatically added to a partial class linked to your ViewModel. Documentation

  • C#
// manual part
using DevExpress.Mvvm.CodeGenerators;

[GenerateViewModel]
public partial class ViewModel {
    [GenerateProperty]
    int _Count;

    [GenerateCommand]
    public void Increment() => Count++;
}

// generated part
partial class ViewModel : INotifyPropertyChanged {
    public event PropertyChangedEventHandler PropertyChanged;
    protected void RaisePropertyChanged(PropertyChangedEventArgs e) => PropertyChanged?.Invoke(this, e);
    public int Count {
        get => _Count;
        set {
            if(EqualityComparer<int>.Default.Equals(_Count, value)) return;
            _Count = value;
            RaisePropertyChanged(CountChangedEventArgs);
        }
    }
    DelegateCommand incrementCommand;
    public DelegateCommand IncrementCommand {
        get => incrementCommand ??= new DelegateCommand(Increment, null, true);
    }
    static PropertyChangedEventArgs CountChangedEventArgs = new PropertyChangedEventArgs(nameof(Count));
}

Compile-time code generation shares benefits associated with both runtime-generated POCO ViewModels and standard ViewModelBase descendants:

  • ViewModels are free of repetitive boilerplate code.
  • Generated code is stored in partial classes. You can view and debug the code easily.
  • ViewModel classes are the same at design time and runtime.
  • Best possible runtime performance since classes are generated in advance.

EventToCommand - Event Args Back Conversion

When passing event args to a command, you can define back conversion logic and return values from a command to an event:

  • XAML
<dxe:TextEdit>
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="Validate"
Command="{Binding ValidateCommand}"
EventArgsConverter={local:ValidateEventArgsConverter} />
</dxmvvm:Interaction.Behaviors>
</dxe:TextEdit>
  • C#
public class ValidateEventArgsConverter : EventArgsConverterBase<ValidationEventArgs> {
    protected override void ConvertBack(object sender, ValidationEventArgs args, object parameter) {
        if (parameter is ValidationInfo info && info.IsValid)
            args.SetError(info.ErrorContent, info.ErrorType);
    }
    ...
}

This should simplify situations when an event expects a return value and UI-specific event args cannot be passed to a ViewModel. Examples of such events are validation, custom sorting, custom display text, etc.

New TreeView

WPF TreeView was first introduced in October 2020 as a community technology preview (CTP). This update marks its official release. The TreeView control includes the following features/capabilities:

  • Bind to Data
  • Hierarchical Data Templates
  • On-Demand Data Loading
  • Data Filtering and Search
  • Data Editing
  • Clipboard Management
  • Drag & Drop
  • Multiple Selection
  • Context Menu
  • Node Icons and Checkboxes
  • Custom Node Content

Documentation

WPF TreeView Control | DevExpress

Data Grid

New Command API

We created the following command counterparts for WPF Data Grid events that expect a return value:

  • CustomColumnDisplayText, CustomGroupDisplayText
  • CustomColumnGroup, CustomColumnSort
  • CustomUniqueValues
  • CustomRowFilter
  • CustomSummary, CustomSummaryExists
  • AddingNewRow
  • RowCanceled, NodeCanceled
  • RowUpdated, NodeUpdated
  • RowDoubleClick, NodeDoubleClick
  • ValidateRow, ValidateNode
  • XAML
                        <dxg:GridControl CustomColumnDisplayTextCommand="{Binding CalculateDisplayTextCommand}" />

These commands pass a typed parameter and expose UI-independent event args to the ViewModel. This change allows you to return values back to an event by simply modifying the command parameter at the ViewModel level:

  • C#
                        [Command]
                        public void CalculateDisplayText(DevExpress.Mvvm.Xpf.CustomColumnDisplayTextArgs args) {
                            args.DisplayText = GetLocalizedValue(args.FieldName, args.Value, Language);
                        }

MVVM Support in Virtual Sources

You can implement data operations for Virtual Sources at the ViewModel level without introducing dependencies to the UI. Virtual Sources introduce new command properties in addition to events:

  • XAML
<dxg:GridControl.ItemsSource>
    <dxg:InfiniteAsyncSource ElementType="{x:Type local:IssueData}"
        FetchRowsCommand="{Binding FetchIssuesCommand}"
        GetTotalSummariesCommand="{Binding GetTotalSummariesCommand}"
        GetUniqueValuesCommand="{Binding GetUniqueValuesCommand}">
    </dxg:InfiniteAsyncSource>
</dxg:GridControl.ItemsSource>

Command parameters expose a platform-independent API that allows you to pass data from the ViewModel to the Data Grid:

  • C#
[Command]
public void FetchIssues(DevExpress.Mvvm.Xpf.FetchRowsAsyncArgs args) {
    args.Result = GetIssuesAsync(args);
}

Bind to gRPC

See our code sample on GitHub to find out how to use Virtual Sources to bind our WPF Data Grid to gRPC service.

How to bind DevExpress WPF DataGrid to a gRPC service

Accordion

Appearance API

Accordion and AccordionItem classes implement the following appearance properties:

  • Background
  • Foreground
  • BorderBrush
  • BorderThickness

Data Editors

Date Picker - Time Intervals

Our WPF DateEdit now supports time intervals when used in DatePicker mode (hour, minute, and second).

  • XAML
<dxe:DateEdit Mask="HH:mm:ss" MaskType="DateTime" MaskUseAsDisplayFormat="True">
    <dxe:DateEdit.StyleSettings>
        <dxe:DateEditPickerStyleSettings HourStep="4" MinuteStep="15" SecondStep="30" />
    </dxe:DateEdit.StyleSettings>
</dxe:DateEdit>

Mask Input Enhancements

Our WPF DateEdit control can now automatically increase or decrease a neighboring segment value when a user spins through DateTime mask segment values and the value passes its minimum or maximum threshold. This behavior is controlled by the ChangeNextPartOnCycleValueChange option.

 

ChangeNextPartOnCycleValueChange - WPF Data Editors, DevExpress| DevExpress

Map Control

Custom Start/End Caps for MapLine and MapPolyline

MapLine, MapPolyline, and MapSpline vector items now include 'StartLineCap' and 'EndLineCap' properties. These properties allow you to display a custom shape at the beginning and at the end of each vector element.

Custom Start/End Caps for MapLine and MapPolyline - WPF Map Control | DevExpress

Bing Maps - New Map Types and GIS Providers

Our BingMapDataProvider supports the following new map types: RoadGray, RoadLight, RoadDark.

BingMap Types - WPF Map | DevExpress

We also added a new BingMapDataProvider.TopLayer property to set the display layer that renders atop the imagery set (BaseMap, Background, Foreground, TrafficFlow).

New GIS providers include:

  • BingTrafficIncidentDataProvider - Displays pushpins with traffic incident information.
  • BingRouteIsochroneDataProvider - Generates a semi-transparent polygon with a pushpin to visualize the distance reachable from a given location, and supports driving and walking modes.

BingRouteDataProvider also offers two new route optimization options: MinimizeTimeWithTraffic and MinimizeTimeAvoidClosure. Its new OptimizeWaypoints property rearranges route waypoints and reduces route cost.

Bing Route Isochrone Data Provider - WPF Map | DevExpress

Restrict Map Panning to an Area

You can now retain user focus on a specific region and prevent them from moving out of that area. Use our new 'MapControl.ScrollArea' property, to limit user access to map areas. Documentation

Colorizer for MapLine, MapPolyline, MapSpline

Colorizers can be applied to the following map vector items: MapLine, MapPolyline, and MapSpline. Once calculated, the color is assigned to the line's Stroke property.

PDF Viewer

Printing Enhancements

We improved our DirectX printing engine so that documents are printed faster, with a smaller print job size.

For backward compatibility, use the 'PdfPrinterSettings.PrintTextAsOutlines' option.

Printing - WPF PDF Viewer | DevExpress

Pivot Grid

Appearance API

Our WPF Pivot Grid ships with the following new appearance settings:

  • Background
  • Foreground
  • BorderBrush
  • BorderThickness

Async Data Processing Enhancements

DevExpress Pivot Grid can now invoke multiple operations in a background thread. We've also enhanced our asynchronous API to return the Task<> object, so you can leverage the 'await' operator.

  • C#
await pivotGridControl.EndUpdateAsync();
await fieldCategory.ExpandAllAsync();
await pivotGridControl.ExpandValueAsync(true, new object[] { 2005 });
pivotGridControl.BestFitRowArea();

Ribbon & Toolbars

Deferred Page Loading

Our WPF Ribbon control's new API allows you to load Ribbon page content on demand (to improve startup performance). This approach works best for applications with many Ribbon pages and items. To enable deferred loading, populate GroupCollectionTemplate with ribbon groups. Documentation

MDI Ribbon - Deferred Merge Operations

Ribbons used within MDI applications (with multiple tabs/pages) can now execute merge operations more quickly (and consume fewer resources). Commands (bar items) within inactive tab(s) are merged onto the main form's Ribbon only when the tab is activated for the first time.

Rich Text Editor

Startup Performance Enhancements

We made significant improvements to our WPF Rich Text Editor's startup performance. The following graph summarizes the performance benefits you can expect once you upgrade to v21.1.

WPF Rich Edit Control - Startup Performance Test | DevExpress

Charts (CTP)

Our WPF Rich Text Editor can now display, print, and export (to PDF) documents with charts. Documentation

Charts - WPF Rich Text Editor | DevExpress

Repeat Row as Header

We added a new table row option - "Repeat as header row at the top of each page". Documentation

Repeat Row as Header - WPF Rich Text Editor | DevExpress

Watermarks

Our WPF Rich Text Editor allows you to import and export documents with watermarks. Watermarks are displayed, printed, and exported to PDF. New API allows you to insert picture and text watermarks, specify watermark options, or remove existing watermarks from a document. Documentation

Watermarks - WPF Rich Text Editor | DevExpress

RC4 CryptoAPI Encryption

Our WPF Rich Text Editor can import and export RC4 CryptoAPI encrypted DOC files. RC4 CryptoAPI is now the default encryption method for binary files if you use the Strong encryption type to encrypt your documents.

ActiveX Controls

Our new API allows you to access ActiveX controls in code, obtain associated properties (type, name, and ProgID), and remove these controls from a document when necessary.

Sankey Diagram

Selection

Users can now select diagram nodes and links. Our Sankey Diagram control supports the following selection modes:

  • Single
  • Multiple
  • Extended (a combination of single and multiple selection modes)

Use the 'SankeyDiagram.SelectionMode' property to specify a desired selection mode. Documentation

Selection - WPF Sankey Diagram | DevExpress

Layout Customization

Our Sankey Diagram now supports a linear layout algorithm. Use the 'SankeyDiagramControl.LayoutAlgorithm' property to customize node positioning:

  • ResolveOverlapping - Automatically repositions nodes to avoid link overlap.
  • NodeAlignment - Aligns all nodes: top, center, or bottom.

You can also implement a custom layout algorithm by deriving from 'SankeyLinearLayoutAlgorithm' or 'SankeyLayoutAlgorithmBase'.

Resolve Node Overlap - WPF Sankey Diagram | DevExpress

Scheduler

'One Month' View

Our WPF Scheduler control includes a "One Month" View option. v21.1 ships with two key enhancements for the Scheduler's One Month View: support for groups and work days.

One Month View - WPF Scheduler and Calendar | DevExpress

Improved Time Zone Support

We have updated our WPF Scheduler's date-time storage mechanism for better control over time zones. A new 'DataSource.TimeZone' property allows you to specify the time zone in which the Scheduler stores date-time values in the data source.

Spreadsheet

RC4 CryptoAPI Encryption

Our Spreadsheet Document API and WinForms/WPF Spreadsheet controls can import and export RC4 CryptoAPI encrypted XLS files. RC4 CryptoAPI is now the default encryption method for binary files if you use the Strong encryption type to encrypt your documents.

Progress Indication

Our Spreadsheet control can now indicate the progress of lengthy operations (file load/save operations, and export to PDF/HTML).

Implement an 'IProgressIndicationService' interface to create a custom progress indicator as needs dictate.

Progress Indication - WPF Spreadsheet Control | DevExpress

Accounting Number Alignment

If you apply the Accounting number format to a cell value, our Spreadsheet displays the currency symbol on the left and numbers on the right.

WPF Spreadsheet Control - Accounting Format Alignment

Excel 2016 Charts – Enhancements

With this release, our WPF Spreadsheet control adds new UI elements designed to insert Excel 2016 charts and change chart types. Documentation

WPF Spreadsheet - Excel 2016 Charts | DevExpress

Our WPF Spreadsheet control can now render, print, and export (to PDF) Sunburst and Treemap charts.

WPF Spreadsheet - Sunburst and Treemap Charts | DevExpress

Startup Performance Enhancements

We made significant improvements to our WPF Spreadsheet's startup performance. The following graph summarizes the performance benefits you can expect once you upgrade to v21.1.

WPF Spreadsheet Control - Startup Performance Test | DevExpress

Document Themes API

You can now access and modify document theme in code. Load a custom theme from a THMX file or customize predefined theme colors as needed.

Image Replacement

Use our new 'Picture.ChangeImage' method to replace an existing worksheet image with a different image. You can specify whether to retain the size of the original image or use new image attributes (size and proportions).

Sunburst and TreeMap

Legend and Titles

DevExpress WPF Tree Map and Sunburst controls can now display legend and title elements. Use the following properties to enable and customize legends and titles as necessary:

  • HierarchicalChartControlBase.Legend
  • HierarchicalChartControlBase.Titles

Legend and Titles - WPF Sunburst and TreeMap | DevExpress

Themes

Theme Preload Enhancements

We enhanced Theme Preload functionality and improved startup performance for consecutive forms and dialogs for DevExpress-powered WPF apps. You can now run Theme Preload synchronously and allow applications to load all theme resources during startup (while a splash screen is displayed on-screen). Once the application is loaded, all forms that require theme resources will be initialized and will open faster.

Here is an example of how Theme Preload can positively impact the load time of a typical form with Data Grid and editors:

  • C#
static Type[] types;
static App() {
    types = new Type[] { typeof(GridControl), typeof(LayoutControl) };
    SplashScreenManager.CreateThemed().ShowOnStartup();
    ThemeManager.PreloadThemeResourceAsync("Office2019Colorful",
        runTypeInitializers: false).Wait();
}

Theme Preload - Performance Test | DevExpress

Miscellaneous

New Barcodes - Identcode and Leitcode

v21.1 extends our barcode library with two new barcode types: Deutsche Post Identcode and Leitcode.

  • Deutsche Post Identcode
  • Deutsche Post Leitcode

Use our new 'DeutschePostIdentcodeGenerator' and 'DeutschePostLeitcodeGenerator' classes to generate Deutsche Post Identcode and Deutsche Post Leitcode barcodes at runtime.

Identcode and Leitcode - DevExpress Reporting

DevExtreme JavaScript Components v21.1

Data Grid

Export to PDF (CTP)

Our Export to PDF API now includes the following options/capabilities:

  • WISIWYG Export to PDF
  • Fit-to-Page
  • Multi-Page Export
  • Text Wrapping
  • Progress Indication
  • Cell Content, Format, and Appearance Customization options

Export to PDF API - Data Grid | DevExpress

Data Grid & Tree List

Pager Enhancements

v21.1 includes the following pager-related enhancements:

  • A new pager.displayMode property. This property specifies the pager's display layout: full, compact, or adaptive.
  • Our page size selector can now display 'All' records on a page (pager.allowedPageSizes).

Editing API Enhancements

You can now use declarative bindings to insert new rows in Angular, React, and Vue applications.

Add New Rows to a Specified Position (CTP)

You can now insert a new row at any location within a list (first, last, or a custom position). Disscussion

Diagram

Get a Diagram Shape or Connector by ID or Key

This release allows you to obtain a diagram shape or connector by its internal identifier (getItemById) or by a data key (getItemByKey).

New shape properties include information about containers:

Iterate through Diagram Shapes and Connectors

Use our new getItems method to obtain an array of all diagram items (shapes and connectors).

Select Shapes and Connectors

v21.1 includes the following API enhancements:

Scroll to Item

Use the new scrollToItem method to scroll the drawing canvas to the specified diagram item.

ES6 Modules

DevExtreme's npm distribution now includes ES6 modules. These modules help optimize Tree Shaking and decrease production JS bundle size. Our internal tests demonstrate a 15-25% bundle size reduction.

With this update, you can also use modern JS bundlers that don't support the CommonJS module format and only work with ES6 modules.

File Manager

Customize a Context Menu for Individual Files/Folders

Our new 'onContextMenuShowing' event allows you to customize your app's context menu for individual files and folders. You can add/remove menu items, specify item state, etc.

Describe Errors on the Client

The File Manager's API includes a new FileSystemError class. This class allows you to specify an error code (errorCode), error description (errorText), and file system element (fileSystemItem) when handling errors within 'CustomFileSystemProvider'.

Show/Hide Progress Panel

Use our new 'showPanel' and 'showPopup' options to display a progress panel and pop-up notifications within the File Manager.

Custom HTTP Headers in Remote File System Provider

You can now customize Ajax (beforeAjaxSend) and form submit requests (beforeSubmit) before they are sent to the server.

Gantt

Export to PDF (CTP)

Our Gantt component can now export content to PDF.

API Enhancements

v21.1 includes the following Gantt related API updates:

  • scrollToDate – Scrolls the Gantt chart to a specified date on a timeline.
  • taskContentTemplate – Allows you to customize the layout and appearance of individual task elements.

Task Content Template - Gantt | DevExpress

HTML/Markdown Editor

v21.1 marks the official release of our HTML/Markdown Editor. The DevExpress HTML/Markdown Editor includes the following integrated features:

  • Inline, Block, and Embedded Format support
  • Format Customization
  • Custom Modules
  • HTML and Markdown Support
  • Insert Image (a link or base64-encoded string) support
  • Image Upload, Resize, Drag-and-Drop, Copy-Paste operations
  • Mail Merge support
  • Copy-Paste Rich Content support
  • Mentions
  • Multiline Toolbar
  • Table support
  • Localization

HTML Editor | DevExpress

Scheduler

Agenda View - Redesigned

Our redesigned Agenda View now displays resources and a recurrence indicator for recurring appointments. Color markers help users differentiate appointments by resource.

Agenda View - Scheduler | DevExpress

Horizontal Virtual Scrolling

Horizontal Virtual Scrolling is now available across all Scheduler Views. When virtual scrolling is enabled, the Scheduler only renders grid cells and appointments that fall into the visible viewport.

Drag-and-Drop Enhancements

Drag&drop is now more intuitive and event positioning more predictable.

Drag and Drop - Scheduler | DevExpress

TypeScript Enhancements

DevExtreme v21.1 includes the following TypeScript related enhancements:

  • DevExtreme modules no longer contain JQuery types if JQuery is not used in your target project.
  • You can now use named types for event arguments within your application code.
  • Event argument types now contain information about optional properties (that can be undefined) and writable properties (that can be modified in your event handlers).

Blazor UI Components

New Masked Input

Our new Blazor Masked Input component includes the following integrated features:

  • Text, Numeric, Date-Time, and Regular Expression Mask support
  • Read-only and Disabled States
  • Null Text
  • Clear Button

Masked Input for Blazor | DevExpress

New Menu

Our new Blazor Menu component ships with the following integrated capabilities/functionality:

  • Horizontal/Vertical Orientation support
  • Three display modes: Auto, Desktop, and Mobile
  • Adaptive Layout
  • Built-in Templates (menu title, menu item, item text, and item submenu)

Blazor Menu | DevExpress

New Report Viewer

v21.1 ships with the first-ever native Blazor Report Viewer component. The new component targets the Blazor Server platform and features the following built-in features/capabilities:

  • C# Public API
  • Print / Export
  • Toolbar UI
  • Bootstrap Theme support
  • Parameters Panel
  • Drill-Down support
  • Interactive Sorting
  • Zoom support

Report Viewer for Blazor | DevExpress

Get Started

New Project Wizard

v21.1 ships with a new Blazor Project Wizard. This wizard allows you to choose a theme and specify localization settings for your Blazor application.

Project Wizard for Blazor | DevExpress

Bootstrap 5 Support

DevExpress Blazor UI components now support Bootstrap 5. Set the global BootstrapVersion option to 'v5' and follow the migration guide to get started.

Migration to .NET 5.0

DevExpress Blazor UI components now support .NET 5.0 (exclusively). All Project Templates in the DevExpress Template Gallery have been updated to reflect this change.

Charts

Pan and Zoom

Users can now zoom and pan the chart area with the mouse wheel or touch gestures. To enable this feature, add the 'DxChartZoomAndPanSettings' component to the Chart's markup and specify its 'ArgumentAxisZoomAndPanMode' and 'ValueAxisZoomAndPanMode' properties.

Pan and Zoom - Blazor Charts | DevExpress

Axis Label Format

The new 'ChartElementFormat' class defines format settings for axis labels. You can specify various numeric and date-time formats along with format specific settings like precision. You can also use the 'FromLdmlString' method to create the desired custom format.

Add/Remove Extra Margins to Outermost Series Points

The new EndOnTick option determines whether Chart axes begin and end on ticks.

The SideMarginsEnabled option adds extra margin space between outermost series points and chart boundaries.

Custom Chart Size

Use the 'Width' and 'Height' properties to specify the Chart's size.

Disable Chart Animation

To disable chart animation, add the 'DxChartAnimationSettings' component into the Chart's markup and disable the 'Enabled' option.

Data Aggregation

The DevExpress Blazor Chart component now offers data aggregation support. Data aggregation significantly improves rendering performance (when rendering a chart against an extremely large set of data points). Aggregation methods include: Auto, Average, Count, Financial, Max, Min, Range, and Sum.

Grid Lines

DevExpress Blazor Charts can display horizontal and vertical grid lines. Use the axis's Visible property to show/hide grid lines as needed.

Grid Lines - Blazor Charts | DevExpress

Tooltip Position

The Chart can now display tooltips inside or outside a series. Use the Position property to specify tooltip position.

Tooltip Position - Blazor Charts | DevExpress

Data Editors

Date Edit and Calendar – First Week of a Year

The new WeekNumberRule property allows you to specify the desired "first week of a year rule". Options include:

  • The first week of the year contains January 1.
  • The first week of the year includes all days in January.
  • The first week of the year has a majority (4 or more) of its days in January.

Apply HTML Events Handlers and CSS Classes to Inputs

With this update, you can assign standard Blazor event handlers to DevExpress Blazor Inputs. The following help topic lists our data editors and supported event handlers: HTML Attributes and Events.

You can also use our new InputCssClass and TextAreaCssClass properties to assign your CSS class to the input/text area of the DevExpress ComboBox, Date Edit, Spin Edit, Text Box, Time Edit, and Memo UI components.

Move Focus to an Editor in Code

Our Blazor Data Editors include a new 'FocusAsync' method. FocusAsync allows you to focus the input field in code.

Input Masks

DevExpress Blazor data input UI components allow you to apply input masks with ease. Masks define data entry constraints and help ensure data consistency and information integrity.

Our Blazor data input UI components support the following mask types:

  • Date-Time
  • Numeric (e.g. currency, percentage, etc.).
  • Simple / Text (e.g. phone numbers, zip codes, social security numbers, etc.).

Navigation and Layout

Popup - Header, Body, and Footer Customization

Our Blazor Popup API now offers extended customization options for the following UI elements:

Popup Size

Our new MinHeight, MaxHeight, MinWidth, and MaxWidth properties allow you to explicitly define a popup's size constraints whenever a popup adapts itself to content.

You can also use the Height and Width properties to manually specify Popup size.

Popup Position

Use our new HorizontalAlignment and VerticalAlignment properties to position a Popup on screen.

Show Multiple Popups

You can now display multiple Popups simultaneously. Popup Z-indices are updated automatically (based on display order). This release also includes a new ZIndex property. You can use this new property to specify a popup's Z-index manually.

Popup - Show and Close Actions

In addition to the Close button, you can now press Escape or click outside the Popup's boundaries to close a Popup. This release includes two customization options - CloseOnEscape and CloseOnOutsideClick. These options can be used to disable this functionality.

Our new ShowAsync and CloseAsync methods allow you to asynchronously display and hide a Popup in code.

We've also implemented the following new events:

  • Showing - Fires before the Popup is displayed and allows you to cancel this action.
  • Shown - Fires after the Popup is displayed.
  • Closing - Fires before the Popup is closed and allows you to cancel this action.
  • Closed - Fires after the Popup is closed.

Grid Layout - Named Areas for Responsive Layouts

You can now quickly deliver apps with responsive layouts. You no longer need to recalculate item row and column index for each screen size. Simply create named areas, assign them to layout items, and place these areas within grid rows in the appropriate/required order.

Tabs - Tab Content Render Modes

Use the new DxTabs.RenderMode property to specify how the DevExpress Blazor Tab component loads tab content. Render modes are as follows:

  • Default. Adds tab content to the DOM each time a tab is activated (replaces the content of the previously active tab).
  • All Tabs. Renders all tab content on initial load and persists it within the DOM. This mode should only be used for apps with a few tabs in its layout (as it can increase page load time).
  • On Demand. Renders tab content when a tab is activated and persists it in the DOM.

API Enhancements

  • DxToolbar.TitleTemplate - Used to define the template for a toolbar's caption/title.
  • DxTabs.TabClick / DxTabBase.Click - Used to specify the click event handler for all/individual tabs.

Scheduler

New Month View

Our Blazor Scheduler ships with a new Month View option. The Month View includes a 'MonthCount' property.

Month View - Blazor Scheduler | DevExpress

New Timeline View

Our new Blazor Timeline View arranges events and appointments across an easy-to-read horizontal timeline. Thanks to its flexible design, our Timeline View allows you to display multiple time rulers with different scales.

Timeline View - Blazor Scheduler | DevExpress

Appointment Tooltip Customization

You can now customize appointment/event tooltips as needed. Use the new AppointmentTooltipTemplate property to specify custom layouts and custom appearance settings for your tooltip.

Appointment Tooltip Template - Blazor Scheduler | DevExpress

Restrict User Actions

The following new options allow you to configure/control Scheduler-related actions available to end users:

  • AllowCreateAppointment
  • AllowEditAppointment
  • AllowDeleteAppointment

API Enhancements

  • 'StartDate' and 'ActiveViewType' properties now support two-way binding to a data field.
  • 'StartDateChanged' / 'ActiveViewTypeChanged' - Allow you to track changes to 'StartDate' and 'ActiveViewType' properties.
  • 'AppointmentFormMode' - Specifies the form used to create and edit appointments/events: compact, popup, or both.
  • 'ShowAppointmentTooltip' - Specifies whether to display a tooltip when a user clicks an appointment/event.
  • 'SelectedAppointment' - Gets the selected appointment.
  • 'SelectedAppointmentChanged' - Allows you to track changes to the 'SelectedAppointment' property.

ASP.NET Controls v21.1

Diagram

Get a Diagram Shape or Connector by ID or Key

We introduced methods that allow you to obtain a diagram shape or connector by its internal identifier (getItemById) or by a data key (getItemByKey).

The following new shape properties obtain information about containers:

Iterate through Diagram Shapes and Connectors

Use our new getItems method to get an array of all diagram items (shapes and connectors).

Select Shapes and Connectors

Scroll to Items

Use the new ScrollToItem method to scroll the drawing canvas to the specified diagram item.

Gantt

Export to PDF (CTP)

Our ASP.NET Web Forms and MVC Gantt control can now export its content to PDF.

API Enhancements

  • ScrollToDate – Scrolls the Gantt chart to the specified date on a timeline.
  • TaskShowing – Allows you to customize task content.

Task Customization - ASP.NET Web Forms Gantt Control | DevExpress

Miscellaneous

Miscellaneous Enhancements

The following enhancements have been applied to major Web Forms and MVC container controls (GridView, TreeList, and CardView) and the DevExpress Data Editors Library:

  • Security enhancements for container controls.
  • Improved touch experience for data editors.
  • Adaptivity and accessibility enhancements.
  • Improved Batch Edit and Data Filtering modes.

ASP.NET Core Controls v21.1

Data Grid

Export to PDF

Our Export to PDF API now includes the following options/capabilities:

  • WISIWYG Export to PDF
  • Fit-to-Page
  • Multi-Page Export
  • Text Wrapping
  • Progress Indication
  • Cell Content, Format, and Appearance Customization

Export to PDF API - Data Grid for ASP.NET Core | DevExpress

Data Grid and Tree List

Pager Enhancements

v21.1 includes the following pager-related enhancements:

  • A new pager.displayMode property. This property specifies the pager's display layout: full, compact, or adaptive.
  • Our page size selector can now display 'All' records on a page (pager.allowedPageSizes).

Add New Rows to a Specified Position (CTP)

You can now insert a new row at any location within a list (first, last, or a custom position).

Disscussion

Diagram

Get a Diagram Shape or Connector by ID or Key

This release allows you to obtain a diagram shape or connector by its internal identifier (getItemById) or by a data key (getItemByKey).

New shape properties obtain information about containers:

Iterate through Diagram Shapes and Connectors

Use our new getItems method to obtain an array of all diagram items (shapes and connectors).

Select Shapes and Connectors

Scroll to Item

Use the new scrollToItem method to scroll the drawing canvas to the specified diagram item.

File Manager

Customize a Context Menu for Individual Files/Folders

Our new 'onContextMenuShowing' event allows you to customize your app's context menu for individual files and folders. You can add/remove menu items, specify item state, etc.

Describe Errors on the Client

The File Manager's API includes a new FileSystemError class. This class allows you to specify an error code (errorCode), error description (errorText), and file system element (fileSystemItem) when handling errors within CustomFileSystemProvider.

Show/Hide Progress Panel

Use our new 'showPanel' and 'showPopup' options to display a progress panel and pop-up notifications within the File Manager.

Custom HTTP Headers in Remote File System Provider

You can now customize Ajax (beforeAjaxSend) and form submit requests (beforeSubmit) before they are sent to the server.

Gantt

Export to PDF (CTP)

Our Gantt component can now export content to PDF.

API Enhancements

v21.1 includes the following Gantt related API updates:

  • scrollToDate – Scrolls the Gantt chart to a specified date on a timeline.
  • taskContentTemplate – Allows you to customize the layout and appearance of individual task elements.

Task Content Template - Gantt | DevExpress

HTML/Markdown Editor

v21.1 marks the official release of our HTML/Markdown Editor. The DevExpress HTML/Markdown Editor includes the following integrated features:

  • Inline, Block, and Embedded Format support
  • Format Customization
  • Custom Modules
  • HTML and Markdown Support
  • Insert Image (a link or base64-encoded string) support
  • Image Upload, Resize, Drag-and-Drop, Copy-Paste operations
  • Mail Merge support
  • Copy-Paste Rich Content support
  • Mentions
  • Multiline Toolbar
  • Table support
  • Localization

HTML Editor | DevExpress

Rich Text Editor

Speech Recognition and Virtual Assistant (Nuance)

You can use the Nuance Dragon SpeechKit to enable speech recognition and voice-activated workflows within the Rich Text Editor. Documentation

Scheduler

Agenda View - Redesigned

Our redesigned Agenda View now displays resources and a recurrence indicator for recurring appointments. Color markers help users differentiate appointments by resource.

Agenda View - Scheduler for ASP.NET Core | DevExpress

Horizontal Virtual Scrolling

Horizontal Virtual Scrolling is now available across all Scheduler Views. When virtual scrolling is enabled, the Scheduler only renders grid cells and appointments that fall into the visible viewport.

Drag-and-Drop Enhancements

Drag&drop is now more intuitive and event positioning more predictable.

Drag and Drop - Scheduler for ASP.NET Core | DevExpress

ASP.NET Bootstrap Controls v21.1

Bootstrap 5 Support

DevExpress ASP.NET WebForms Bootstrap components now support Bootstrap 5.

WinUI 3 Controls v21.1

We are happy to announce the official release of our first WinUI 3 and Reunion 0.5 UI component suite. DevExpress WinUI component library includes a comprehensive set of high-performance user interface controls with full MVVM support.

  • Data Grid
  • Data Editors
  • 20 Chart Types
  • Gauge Indicators
  • Scheduler & Calendar
  • Ribbon Toolbar
  • Range
  • BarCode
  • MVVM Framework
  

Our WinUI components will be available free of charge for a limited time. For more information on this free offer, including all terms and conditions, please visit the free offer page below.

For a limited time, you can download and use
our WinUI component suite free-of-charge.

.NET Reporting v21.1

All Platforms

PDF Export - Tagged PDF

Our PDF export engine can now produce tagged PDF documents for those who use screen readers and other assistive technologies.

You can export documents that conform to the following standards:

  • PDF/UA
  • PDF/A-1a, PDF/A-2a, PDF/A-3a

DevExpress report controls ship with a new AccessibleDescription property. This property maps alternate text for PDF elements and allows you to describe the control's visual content and make it accessible to screen readers.

PDF Accessibility Check - DevExpress Reporting

New Barcodes - Identcode and Leitcode

v21.1 extends our barcode library with two new barcode types: Deutsche Post Identcode and Leitcode.

  • Deutsche Post Identcode
  • Deutsche Post Leitcode

Use our new 'DeutschePostIdentcodeGenerator' and 'DeutschePostLeitcodeGenerator' classes to generate Deutsche Post Identcode and Deutsche Post Leitcode barcodes at runtime.

Identcode and Leitcode - DevExpress Reporting

Data Source Enhancements

Federation Data Source - Fluent API

The Federation Data Source allows you to combine data from multiple sources. We implemented a Fluent API that allows you to create transformation-based operations to these sources. You can flatten and unfold columns, or apply the two operations together. Documentation

  • C#
var source = new Source("Products", jsonDataSource);

var query = source
    .Transform()
    .FlattenColumn("Products")
    .Build("Products");

var federation = new FederationDataSource() {
    Queries = { query }
};

Excel Data Source - Binding by a Sheet Index

We added a new WorksheetIndex property that simplifies binding to Excel files. The property allows you to bind a report to a specific Excel file sheet by index. You can use this property instead of the 'WorksheetName' property when you don't know the name of the sheet to which you want to bind a report and/or to avoid mistakes with sheet names.

  • C#
var worksheetSettings = new ExcelWorksheetSettings() {
    WorksheetIndex = 1
};

Blazor

New Native Blazor Report Viewer

v21.1 ships with the first-ever native Blazor Report Viewer component. The new component targets the Blazor Server platform and features the following built-in features/capabilities:

  • C# Public API
  • Print / Export
  • Toolbar UI
  • Bootstrap Theme support
  • Parameters Panel
  • Drill-Down support
  • Interactive Sorting
  • Zoom support

Report Viewer for Blazor | DevExpress

Get Started

Web

Document Viewer - Section 508 Compliance and WAI-ARIA Support

Our Web Document Viewer component now addresses Section 508 standards and Web Content Accessibility Guidelines. Documentation

 

Run DemoRead VPATBlog Post

Document Viewer - Print/Export Reports in the Same Browser Tab

The DevExpress Web Document Viewer can now export and print a report within the same browser tab. Set the ExportSettings.UseSameTab property to 'true' to enable this behavior.

Web Document Viewer - DevExpress Reporting

Web Report Designer - Multi-Tenant Support

You can now restrict access to data by user. User access may be restricted to specific rows and columns within a table. Use our new service (ISelectQueryFilterService) in your multi-tenant environment to filter every SELECT query before it is executed (to retrieve data for the Document Viewer, Report Designer's Preview, or Query Builder). Documentation

WinForms, WPF & Visual Studio

Report Design Analyzer

We improved and renamed our Report Designer Script Errors panel to Report Design Analyzer. This panel helps you avoid design-related mistakes that can affect document appearance and generated export files.

With this release, the DevExpress Report Design Analyzer tool is available for Visual Studio Report Designer, DevExpress WinForms and WPF End-User Report Designers. It scans your report for changes on the fly, points you to report layout issues, and lists actions you can take to avoid potential errors.

You can filter errors and warnings using the following categories:

  • Layout Issues
  • Scripts Issues
  • Document Generation Issues

Report Designer - Report Design Analyzer | DevExpress

New MongoDB Data Source

Our Data Source Wizard now features a new data source that allows you to bind a report to a MongoDB instance. You can create queries to database collections and specify filter conditions for your queries. Documentation

Data Source Wizard - Bind to MongoDB | DevExpress Reporting

  • C#
                        var connectionParameters = new MongoDBConnectionParameters(
                            hostName: "localhost",
                            isSRV: false,
                            port: 27017
                        );

                        var queryProducts = new MongoDBQuery() {
                            DatabaseName = "Northwind",
                            CollectionName = "Products",
                            FilterString = "[UnitPrice] <= 40"
                        };

                        var mongoDBDataSource = new MongoDBDataSource() {
                            ConnectionParameters = connectionParameters,
                            Queries = { queryProducts }
                        };

                        var report = new XtraReport() {
                            DataSource = mongoDBDataSource,
                            DataMember = "Products"
                        };

Report Designer - Custom Expressions in Filter Editor

You can now use report parameters as left-hand operands.

Custom expression examples:

  • ?parameter1 Is Not Null And Model = 'Model S' - a filter will be applied if a parameter value is selected.
  • ?parameter1 In(1,2,3) AND Model = 'Model X' - a filter will be applied if a parameter value falls within a specified range.

Filter Editor - Optional Filtering | DevExpress Reporting

UX Enhancements

Our Visual Studio and End-User Report Designers v21.1 ship with the following UI/UX enhancements.

New smart tag icons for report controls and the report itself.

New Smart Tags - DevExpress Reporting

The Report Explorer now lists available data sources.

Report Explorer - Data Sources | DevExpress

Business Intelligence Dashboard v21.1

Dashboard for Blazor (CTP)

DevExpress Dashboard v21.1 supports Blazor apps. You can now design and integrate dashboards within your Blazor solution as requirements dictate. This new Dashboard component works with both Blazor Server and Blazor WebAssembly. Documentation

Dashboard Viewer for Blazor | DevExpress

Dashboard Designer for Blazor | DevExpress

Run DemoExample

MongoDB Data Source

DevExpress Dashboard v21.1 ships with a new data source type (DashboardMongoDBDataSource). With it, you can bind your Dashboard to your MongoDB data store. As you might expect, the data source allows you to generate queries for database collections and specify filter conditions for your queries. Documentation

  • C#
var dashboard = new Dashboard();

var dataSource = new DashboardMongoDBDataSource() {
    ConnectionParameters = new MongoDBConnectionParameters("localhost", false, 27017)
};

var queryCategories = new MongoDBQuery() {
    DatabaseName = "Northwind",
    CollectionName = "Categories"
};

dataSource.Queries.Add(queryCategories);

var queryProducts = new MongoDBQuery() {
    DatabaseName = "Northwind",
    CollectionName = "Products"
};

dataSource.Queries.Add(queryProducts);
dashboard.DataSources.Add(dataSource);

Web Dashboard

TextBox Item - Export Customization API

We extended our Dashboard's Export Customization API to support TextBox Item customization. The 'GetPrintableControl' method now returns an XRTextBox object for a TextBox dashboard item within the CustomExport event handler.

Filter Editor - OLAP Enhancements

This release includes the following OLAP-related filter enhancements:

  • Fields with unique values are processed much more quickly. For instance, a field with 50K unique values is now processed in a few seconds.
  • Non-hierarchical fields now support the search option.

WinForms Dashboard

Custom Dashboard Item

You can now construct Custom Dashboard Items for your WinForms application. Our new Custom Dashboard Item allows you to embed any WinForms UI control into your Dashboard. You can interact with custom items in our Dashboard Designer just like other built-in items.

Custom Dashboard items include the following features/capabilities:

  • Master Filtering
  • Drill-Down
  • Export - The Dashboard control utilizes DevExpress Reports to export a dashboard's layout and its data. You can use "native report" XRControls to export custom items.
  • Coloring - You can associate dimension or measure values with specific colors in the Dashboard Designer and maintain consistent color schemes in your dashboard.

Custom Items - Dashboard for WinForms | DevExpress

Examples

TextBox Item - Export Customization API

We extended our Dashboard's Export Customization API to support TextBox Item customization. The 'GetPrintableControl' method now returns an XRTextBox object for a TextBox dashboard item within the CustomExport event handler. Documentation

Copy Calculated Fields to Federated Data Source

A Federated Data Source generated via our WinForms Data Federation Wizard allows users to copy calculated fields from their original data sources to their Federated Data Sources. Documentation

WPF Dashboard

TextBox Item - Export Customization API

We extended our Dashboard's Export Customization API to support TextBox Item customization. The 'GetPrintableControl' method now returns an XRTextBox object for a TextBox dashboard item within the CustomExport event handler.

Office File API v21.1

PDF Document API

ZUGFeRD-Compliant PDF

The DevExpress PDF Document API now allows you to attach ZUGFeRD XML (cross-industry data format for electronic invoice data exchange) to your PDF documents. Documentation

ZUGFeRD-Compliant PDF - Office File API | DevExpress

Form Field API Enhancements

We extended our Form Field API so you can change the properties of available form field types, retrieve complex field items, and change associated display text. Documentation

Digital Signature Appearance

Our new API allows you to manage signature appearance. You can display additional information in a signature field (location, reason, signer name, etc.) alongside a signature image. Documentation

Digital Signature Appearance - PDF Document API | DevExpress

Printing Enhancements

We improved our DirectX printing engine so that documents are printed faster, with a smaller print job size.

For backward compatibility, use the 'PdfPrinterSettings.PrintTextAsOutlines' option.

Printing Performance Test - Office File API | DevExpress

XMP Metadata

You can now embed Extensible Metadata Platform (XMP) data in your PDF document. XMP is a standard format for metadata generation, processing, and interchange.

Spreadsheet Document API

RC4 CryptoAPI Encryption

Our Spreadsheet Document API and WinForms/WPF Spreadsheet controls can import and export RC4 CryptoAPI encrypted XLS files. RC4 CryptoAPI is now the default encryption method for binary files if you use the Strong encryption type to encrypt your documents.

Progress Indication

We added an IProgress<T> parameter to the following asynchronous methods to implement progress notifications:

  • Workbook.LoadDocumentAsync

  • Workbook.SaveDocumentAsync

  • Workbook.ExportToPdfAsync

  • Workbook.ExportToHtmlAsync

Document Themes API

You can now access and modify document theme in code. Load a custom theme from a THMX file or customize predefined theme colors as needed.

Save Cell Ranges as Images

Our new 'CellRange.ExportToImage' extension method allows you to export a cell range to an image and define export options (image resolution, scale percentage, enable black or white mode, etc.).

Image Replacement

Use our new 'Picture.ChangeImage' method to replace an existing worksheet image with a different image. You can specify whether to retain the size of the original image or use new image attributes (size and proportions).

Sunburst and Treemap Charts

You can now print and export (to PDF) Treemap and Sunburst charts. Documentation

Spreadsheet Document API - Sunburst Chart | DevExpress

Accounting Number Format Alignment

We now support Accounting number format alignment. If you apply this number format to cells and then print or export your document to PDF, our Spreadsheet Document API will render the currency symbol on the left and numbers on the right.

Spreadsheet Document API - Accounting Number Format | DevExpress

Word Processing Document API

RC4 CryptoAPI Encryption

Our Word Processing Document API and Rich Text Editors (for WinForms and WPF) can import and export RC4 CryptoAPI encrypted DOC files. RC4 CryptoAPI is now the default encryption method for binary files if you use the Strong encryption type to encrypt your documents.

Repeat Row as Header

Enable our new TableRow.RepeatAsHeaderRow option to repeat a row as a header at the top of each page. Documentation

Repeat Row as Header - Office File API | DevExpress

Charts (CTP)

Our Word Processing Document API and WinForms/WPF Rich Text Editors can now display, print, and export (to PDF) documents with charts. You can also use our Spreadsheet Chart API to create 2D/3D charts in code, apply chart styles, and format individual chart elements. Documentation

Charts - Office File API | DevExpress

Watermarks

Our Word Processing Document API and WinForms/WPF Rich Text Editors allow you to import and export documents with watermarks. Watermarks are displayed, printed, and exported to PDF. New API allows you to insert picture and text watermarks, specify watermark options, or remove existing watermarks from a document. Documentation

Watermarks - Office File API | DevExpress

ActiveX Controls

Our new API allows you to access ActiveX controls in code, obtain associated properties (type, name, and ProgID), and remove these controls from a document when necessary.

XAF - Cross-Platform .NET App UI v21.1

Blazor

ASP.NET Core Blazor Server UI Enhancements

  • Clone Object Module for XPO
  • State Machine Module for XPO
  • Action Container View Item
  • Dashboard View
  • New TimeSpan Property Editor
  • Text Notifications with ShowViewStrategy.ShowMessage
  • In our new Queryable data access mode, list views can work with any external data source beyond supported ORMs.
  • XAF's Blazor and WinForms (.NET Core) assemblies target .NET 5 (Learn more)
  • New options allow you to customize a pop-up window's size, position, style, and other settings (similar to our ASP.NET Web Forms implementation).
  • Grid List Editor enhancements include new options: selection in code, group and total summaries, column width, position, and sort order.

EF Core Support for Blazor

Our Blazor Server UI and our Entity Framework Core ORM classes were first introduced in October 2020 (as a community technology preview - CTP). This update marks their official release. Documentation

You can find a demo at:
c:\Users\Public\Documents\DevExpress Demos 21.1\Components\eXpressApp Framework\EFCoreDemo\

We encourage our Entity Framework 6 (EF 6) users to consider Entity Framework Core (EF Core) for new XAF's Blazor and WinForms .NET Core projects.

Microsoft has moved EF 6 into maintenance mode, and as such, EF 6 will not mirror XAF's .NET Core offering. At present, EF Core supports key XAF technologies/capabilities including advanced security and comprehensive audit trail support. EF Core also offers better performance when compared to EF 6. For more information, see Porting from EF 6 to EF Core.

 

Performance Test

Localization

v21.1 includes multi-language localization support (much like our WinForms/WebForms product line). You can use predefined resources or our Model Editor as requirements dictate. And yes, you can switch to a preferable language at runtime. Documentation

Localization - XAF for Blazor | DevExpress

Run Demo

Core Enhancements

Model Editor for .NET Core

This update marks the official release of our Model Editor for .NET Core 3, .NET Standard 2.0+ and .NET 5. The Model Editor includes the following enhancements:

  • Performance and Stability Improvements
  • Enhanced Grouping for Views and Validation Nodes

Audit Trail Module for EF Core (CTP)

Audit Trail supports XAF's Blazor UI, WinForms UI, and non-XAF apps.

We do not recommend use of our new Audit Trail Module with EF Core classes for production code. We've made it available to obtain feedback and engage those of you considering it for future use.

Solution Wizard for WinForms and Blazor

With our enhanced Solution Wizard, the following tasks can be completed much more quickly:

  • Create solutions that combine WinForms and Blazor .NET 5 for XPO or EF Core ORM.
  • Add new .NET 5 Modules to an existing WinForms or Blazor solution.
  • Create a solution with OAuth identity providers without writing custom code.
  • Extend a security user class with additional properties.

Miscellaneous Enhancements

Security Enhancements

LINQ-based Security Permission Criteria Syntax

XAF v21.1 includes new methods to create predefined object and member security permissions in the ModuleUpdater class (powered by CriteriaOperator.FromLambda). Documentation

  • C#
securityDemoRole.AddObjectPermissionFromLambda<PermissionPolicyUser>(SecurityOperations.ReadOnlyAccess, t => t.Oid == (Guid)CurrentUserIdOperator.CurrentUserId(), SecurityPermissionState.Allow);
securityDemoRole.AddMemberPermissionFromLambda<PermissionPolicyUser>(SecurityOperations.ReadWriteAccess, "ChangePasswordOnFirstLogon; StoredPassword", null, SecurityPermissionState.Allow);
securityDemoRole.AddObjectPermissionFromLambda<PermissionPolicyRole>(SecurityOperations.ReadOnlyAccess, t => t.Name == "Demo", SecurityPermissionState.Allow);

WinForms UI

With our v21.1+ release, desktop NuGet packages will include both .NET Core Desktop and .NET Framework assemblies. DevExpress.WindowsDesktop.* NuGet packages will not be available for v21.1+ as in earlier versions.

For complete change log, reasons for change and migration instructions, please refer to this Breaking Change document.

EF Core Support for WinForms (CTP)

XAF's WinForms UI can now use EF Core data models. You can find a demo at:
'c:\Users\Public\Documents\DevExpress Demos 21.1\Components\eXpressApp Framework\EFCoreDemo\'.

We do not recommend use of our WinForms UI with EF Core classes for production code. We've made it available to obtain feedback and engage those of you considering it for future use. Documentation

 

Performance Test

Xamarin.Forms Controls v21.1

New Popup Component

Our new Xamarin.Forms Popup component acts as a dialog or dropdown (when you attach it to a view visible on-screen).

Popup Component for Xamarin.Forms | DevExpress

Charts Enhancements

Generate Series Based on a Template

Our Xamarin.Forms Mobile ChartView can now generate series from a bound data source based on a template that defines series type and settings. This feature will be of value if series count is unknown or if it is extremely large.

Axis Labels - Arrangement Options

New 'AxisLabel.Angle' and 'AxisLabel.Staggered' properties allow you to rotate axis labels or stagger its order. This improves the readability of long axis labels and avoids overlap.

Axis Labels - Xamarin.Forms Charts | DevExpress

Dashed Constant Lines, Axis Tickmarks, and Gridlines

Our Xamarin.Forms ChartView can now draw constant lines, axis tickmarks, and gridlines as dashed or dotted lines. You can specify the length of alternating dashes and gaps for lines. Our updated API includes the following:

  • ConstantLineStyle.Dashes
  • AxisStyle.MajorTickmarkDashes / AxisStyle.MinorTickmarkDashes
  • AxisStyle.MajorGridlineDashes / AxisStyle.MinorGridlineDashes

Dashed Constant Lines, Axis Tickmarks, and Gridlines - Xamarin.Forms Chart | DevExpress

Point Colorizers - Use Colors from a Data Source

Our ChartView can now colorize series points and generate legend items based on colors and color descriptions stored in a data source.

Area Series - Transparent Gradient

You can now apply a transparent gradient to an area series. Our new 'AreaSeriesStyle.FillEffect' property allows you to specify how visible area color intensity changes from the baseline to the series line.

Area Series - Transparency Gradient, Xamarin.Forms Chart | DevExpress

Collection View Enhancements

Swipe Support

Our Xamarin.Forms CollectionView now supports swipe gestures. You can perform custom actions on tap and specify additional buttons that appear when a user swipes an item.

Swipe Support - Xamarin.Forms Collection View | DevExpress

Data Form Enhancements

Our Xamarin Data Form ships with the following new features/capabilities:

  • We added a new item type that generates a Checkbox in a data form - DataFormCheckBoxItem.
  • DataFormNumericItem now creates our NumericEdit.
  • A new 'DataFormView.ValidateForm' event allows you to validate the entire form when a form is closed.
  • A new 'DataFormCustomItem.EditorValue' property allows you to validate and commit values entered within custom editors.

Data Grid Enhancements

v21.1 includes the following new features/capabilities:

  • The 'DataGridView' now uses our DataFormView. This is an advanced and fully customizable edit form with a modern look and feel.
  • The AllowInitiallySelectedRow property allows you to prevent a row from being selected when the view is displayed on-screen for the first time.
  • The ShowingEditor event is raised before a cell editor is activated. Event arguments determine the processed cell and allow you to cancel the action.
  • The SwipeItemShowing event fires when a user swipes a grid row. Event arguments determine the processed row, swipe direction, and allow you to cancel the action.

Data Access v21.1

LINQ-based Criteria Syntax

Inspired by XAF's lambda-based methods (such as IObjectSpace.FirstOrDefault), we extended the CriteriaOperator class so you can create type-safe criteria more easily. The new CriteriaOpertor.FromLambda<TModel,TResult> method supports common LINQ expressions and methods, many CriteriaOperator descendants, and custom criteria functions or aggregates.

  • C#
// FROM
CriteriaOperator.Parse("Name = ?", "Gera");
// TO
CriteriaOperator.FromLambda<Customer, bool>(cm => cm.Name == "Gera");

// More complex examples:
CriteriaOperator.FromLambda<Customer, int>(cm => JoinOperand.FromLambda<Order,
int>(om => cm.Oid == om.CustomerOid && om.Price > 5, g => g.Count()));

// Group Expressions
CriteriaOperator.FromLambda<Customer, bool>(cm => cm.Orders.Count()>10 &&
cm.Islongterm && cm.Orders.All(om => !(om.IsComplete)));

Note: CriteriaOperator.FromLambda does not support LINQ expressions because DevExpress Criteria Language and LINQ are incompatible. For instance, GroupBy, OrderBy, and other LINQ methods used for filtering are not supported.

Native User Interface Chart Control v21.1

Area Series - Transparent Gradient

You can now apply a transparent gradient to an area series. Our new 'AreaSeriesStyle.FillEffect' property allows you to specify how visible area color intensity changes from the baseline to the series line.

Area Series - Transparency Gradient, Native Charts | DevExpress

Axis Labels - Arrangement Options

New 'AxisLabel.Angle' and 'AxisLabel.Staggered' properties allow you to rotate axis labels or stagger its order. This improves the readability of long axis labels and avoids overlap.

Axis Labels - Native Charts | DevExpress

Dashed Constant Lines, Axis Tickmarks, and Gridlines

Our Native Mobile ChartView can now draw constant lines, axis tickmarks, and gridlines as dashed or dotted lines. You can specify the length of alternating dashes and gaps for lines. Our updated API includes the following:

  • ConstantLineStyle.Dashes
  • AxisStyle.MajorTickmarkDashes / AxisStyle.MinorTickmarkDashes
  • AxisStyle.MajorGridlineDashes / AxisStyle.MinorGridlineDashes

Dashed Constant Lines, Axis Tickmarks, and Gridlines - Native Chart | DevExpress

Generate Series Based on a Template

Our Native Mobile ChartView can now generate series from a bound data source based on a template that defines series type and settings. This feature will be of value if series count is unknown or if it is extremely large.

Point Colorizers - Use Colors from a Data Source

Our ChartView can now colorize series points and generate legend items based on colors and color descriptions stored in a data source.

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