New Gantt (CTP)
The new DevExpress WinForms Gantt Control is a powerful project management tool that allows you to schedule tasks and monitor the progress of projects.
Our WinForms Gantt control ships with a variety of high-impact features including:
- Data binding support
- Multiple task types
- Working days and holiday tracking
- Configurable task appearance options
- Time scale customization
- Data filtering, sorting, etc.
- Scroll and zoom options
- Printing support
- DirectX Hardware Acceleration for the fastest possible performance
Demo Blog Post Documentation
New SvgImageBox
Our new WinForms SvgImageBox control displays an SVG image and allows users to interact with individual image elements via selection and hot-track. The control's API allows you to access and customize image elements (for instance, hide or change their appearance) and respond to user actions.
Blog Post Documentation
.Net Core 3 Support
Our WinForms product line supports .NET Core 3.0. However, since the new WinForms designer is not yet available within Visual Studio, you can only use our UI controls in code or use a workaround with linked files. Our WinForms .NET Core 3 components remain as a CTP (Community Technical Preview) until Microsoft ships its WinForms designer.
Blog Post Documentation
Data Grid
Search and Group Panel Integration
Both the Search Panel and Group Panel have been combined into a single element. The Group Panel displays a 'Search' button on its right. When clicked, it reveals a search text box. This new layout maximizes uses of screen real-estate and prevents the control from moving records up or down when users invoke and hide the Search Panel.
This layout is enabled by default. If you wish to revert to two separate panels, set the OptionsFind.FindPanelLocation property to 'GroupPanel'.
Demo Blog Post Documentation
Miscellaneous Enhancements
- Group Row Context Menu
Our WinForms Data Grid now includes a context menu for group rows. You can handle the PopupMenuShowing event to add custom menu commands as needed.
- CheckBox Selection for Banded and Advanced Banded Grid Views
You can now set the GridOptionsSelection.GridMultiSelectMode property to 'CheckBoxRowSelect' for Banded and AdvancedBanded Views.
- Display Selection Checkboxes in Group Rows in Data Bound Mode
Group rows can now display a selection check box when checkbox selection state is bound to a data source field. Documentation
- Copy to Clipboard
You can handle a new event (ClipboardRowCopying) to modify Clipboard data or prevent certain rows from being copied to the Clipboard.
- Drag-and-Drop
Our WinForms Data Grid now supports drag & drop between its TileView and GridView. Use DragAndDrop Behavior (Behavior Manager component) to enable this option. Documentation
- Edit Form
The new EditFormHidden event allows you to execute custom actions after the Edit Form has been closed in both the GridView and TileView. Documentation
- Excel Style Filtering Menu
The FilterPopupExcelParseFilterCriteria event allows you to convert filter criteria to filter values for Excel-style filter menus. Documentation
Charting
Waterfall
This release includes a new Waterfall chart type. Waterfall charts can help visualize positive and negative changes to values across a given time period.
Demo Documentation
Box Plot
This release includes a new Box Plot chart type. Box Plot charts help you visualize data distribution across a six number summary (minimum, first quartile, median, third quartile, maximum and mean). Any data not included between minimum and maximum values are plotted as an outlier with a small circle.
Demo Documentation
Chart Toolbar Enhancements
Our new Chart Toolbar allows you to:
- Switch a series view
- Draw Fibonacci indicators with use of built-in drawing tools
- Plot any technical indicator on a separate pane
- Change a measurement unit for the axis of arguments
- Adjust a visible data range
The toolbar can be customized. You can rearrange UI elements or hide unnecessary commands.
Demo Documentation
Resize Panes at Runtime
Enable the XYDiagram2D.RuntimePaneResize option to allow end-users to change pane size.
Demo Documentation
Scrollbar Annotations
With scrollbar annotations, you can direct users to important information within the XY diagram. We offer annotations for the following chart elements:
- Strips
- Constant Lines
- Pane Annotations
- Series Point Annotations
- Custom Axis Labels
You can enable/disable scrollbar annotations for specific chart elements.
Demo Documentation
TimeSpan Axis Scale Support
v19.2 introduces full support for TimeSpan scales. You can plot your TimeSpan data as-is or specify a custom aggregation mode. TimeSpan data can be mapped to an X-Axis, Y-Axis or both.
Demo
New Default Appearance Schema (Basic Skin)
In v19.2, we've updated the default appearance schema for our WinForms Chart control to match our new Basic skin.
See details
Accordion
New enhancements include:
Diagram
Org Chart Layout
The new Org Chart automatic layout algorithm visualizes roles and relationships within an entity such as a company department. Shapes at the upper levels of the hierarchy are arranged using the "tree graph" algorithm. The number of levels in the tree section is specified by the OrgChartLayoutTreeLevelCount property.
The lower levels of the hierarchy are arranged using the "tip-over" tree layout algorithm.
Org Chart Layout Demo
Connector Labels
With this release, you can add up to four text labels to connectors. You can add two labels at the start point and two labels at the end point.
New API includes:
- BeginLeftLabel / BeginRightLabel
- EndLeftLabel / EndRightLabel
- BeginLabelArrowOffset / BeginLabelConnectorOffset
- EndLabelArrowOffset / EndLabelConnectorOffset
Demo
Editors
LookUp Editors - AutoSuggest Mode (Virtual Search)
Our WinForms LookUpEdit and GridLookUpEdits controls support a new user-friendly search option.
In AutoSuggest mode, our WinForms Lookup editor fires an AutoSuggest event whenever a user enters text within it. You can handle this event and assign an asynchronous Task to the QuerySuggestions parameter to populate your lookup list. This asynchronous Task should check the text entered within the lookup and return an item collection for the editor's drop-down window.
Demo Documentation Blog Post
lookUpEdit1.AutoSuggest += OnAutoSuggest;
lookUpEdit1.Properties.SearchMode = SearchMode.AutoSuggest;
void OnAutoSuggest(object sender, LookUpEditAutoSuggestEventArgs e) {
e.QuerySuggestions = (Task<ICollection>) ... ;
}
Lookup Editors - AutoSearch Mode
AutoSearch mode was designed for bound LookUpEdit and GridLookUpEdit controls. AutoSearch "unlocks" the editor's text box and allows users to enter "search" criteria within it. The editor hides data source records that do not match the text entered within the text field and displays matching entries within its drop-down window.
To enable AutoSearch mode, set the SearchMode property to 'AutoSearch'.
You can handle the AutoSearch event to fine-tune search results and\or customize text highlight logic.
Demo Documentation Blog Post
lookUpEdit1.Properties.SearchMode = SearchMode.AutoSearch;
lookUpEdit1.Properties.SearchMode = SearchMode.AutoSearch;
lookUpEdit1.AutoSearch += OnAutoSearch;
void OnAutoSearch(object sender, LookUpEditAutoSearchEventArgs e) {
e.SetParameters(...);
}
TimeSpan Edit Mask
New TimeSpan and TimeSpanAdvancingCaret masks allow end-users to enter time intervals. Both masks support negative intervals.
Demo Documentation
Map
Heatmap Data Provider
v19.2 includes a new cartographic visualization option – a heat map. To create a heat map, use our new data provider (HeatmapProvider) linked to geographical point data (latitude and longitude) and define the heat map color schema using ChoroplethColorizer.
You can also change the following heatmap options: color gradient, opacity and data point radius.
Demo Documentation
In-Memory Image Tile Provider
The ImageTileDataProvider allows you to display custom tile images without saving them locally. You can load image tiles created at runtime from almost any source. To do this, create a bitmap for each tile based on its indices.
Example - GitHub Project Documentation
Gradient Mode for ColorScaleLegend
This release includes a new EnableGradientScale property. Set this property to true and create a gradual blend between legend color items.
Demo Documentation
Pivot Grid
Aggregation at Any Level
This release includes an optimized Pivot Grid calculation engine for WinForms, WPF and ASP.NET. This new engine provides a more versatile summary expression function. The scope of the function is unbound fields. The Aggr function aggregates data with a specific summary function against a specific set of dimensions. Aggr functions can be nested as needed (you can easily create the desired aggregation level within the Pivot Grid control).
The Aggr function has the following syntax: Aggr(summaryExpression, dimension1, dimension2, ...)
The first argument is a summary expression calculated against a data source field. It is followed by a set of dimensions whose values are grouped to calculate summaries for the first argument.
Learn more about aggregation at any level
Demo
Window Calculations
You can now specify the following window calculation options:
- Running Totals
- Moving Calculation
- Rank
- Difference
- Percent Of Total
- Custom Window Expression
Our new object model includes the following classes:
- RunningTotalBinding
- MovingCalculationBinding
- RankBinding
- DifferenceBinding
- PercentOfTotalBinding
- WindowExpressionBinding
These enhancements are available when our new Optimized calculation engine is activated.
Demo Documentation
Direct Data Access in Client Mode
Our data engine loads data to local in-memory storage. This local storage is optimized for frequent calculations with typed data sets and guarantees data integrity. Some large data sets, however, may require too large a memory footprint (which can, in turn, slow down an application).
With this release, we've added a DirectDataAccessInClientMode option. When the DirectDataAccessInClientMode option is enabled, our calculation engine does not upload source data to temporary storage. This avoids performance degradation in Client mode when working with large volumes of data (and when frequent re-calculations are unnecessary).
This option cannot be used if using the PivotGrid in Legacy mode.
MRU Filter List
Our WinForms Pivot Grid's Filter Panel includes a drop-down list that displays recent filters applied to pivot data. To display the most recently used filters, click the MRU Filter Button or click the filter criteria.
Documentation
Range Control
Date-Time Range Client for the Range Control
Our new Date-Time Range client allows you to visualize and select date-time intervals within the WinForms Range Control. The new client supports multiple rulers, appearance customization options and provides custom draw events.
To use the Date-Time client at design time, invoke the Add Date-Time Client smart tag command. Use the RangeControl.Client property to specify the client at runtime.
Demo Documentation
Ribbon, Bars and Dock UI
DockManager - Dock to the Center
Our DockManager allows you to dock its panels to a parent container's center region. Modern docking guides (hints) are also available and do not require a separate DocumentManager component.
Demo Blog Post Documentation
Miscellaneous Enhancements
- You can now hide/display the BackstageView at design time via a smart tag. Documentation
-
You can now adjust the offset between a BarEditItem's caption and its editor. Documentation
-
You can now apply a foreground color to custom Ribbon categories.
-
A Ribbon Group's caption button is now hidden by default (unless you subscribe to the CaptionButtonClick event, or enable the ShowCaptionButton option).
- You can now activate the Ribbon's Search Menu via a shortcut. Use the RibbonControl.SearchItemShortcut property to specify the shortcut. Documentation
- The CustomizationFormShowing event allows you to modify the Customization Form, or replace it with a custom form. Documentation
Rich Text Editor
Hyphenation
Our WinForms Rich Text Editor now supports soft hyphens and automatic hyphenation. You can load, print and export documents with soft hyphens. End users can insert hyphens via the Ribbon UI or the Ctrl+- shortcut.
You can also enable automatic hyphenation. To do so, link a dictionary that specifies hyphenation rules.
Documentation
Track Changes
Our Rich Text Editor allows you to use Track Changes to make revisions in a document. You can access, accept or reject changes in code. New UI elements allow you to enable change tracking and display revisions. Documents with revisions can be printed and exported to PDF.
Blog Post Documentation
Theme Font Support
Our Word Processing Document API and WinForms / WPF Rich Text Editors support theme fonts. A document theme contains two sets of fonts (Headings and Body) for the entire document. Each set includes font names for different languages.
Scheduler
Resource Categories and Office-inspired Resource Tabs
Our WinForms Scheduler can now arrange resources into categories. For example, you can create business-related and personal categories.
You can also display resources as tabs.
Demo - Tabs Documentation
Recurrence Form Enhancements
We've redesigned the Recurrence Form and added a year recurrence option. You can now schedule events that repeat once every N years.
HTML Formatting
You can now use HTML-inspired tags within Scheduler appointments/events (subject, description and location). Set the view's AppointmentDisplayOptions.AllowHtmlText property to true to enable HTML formatting. You can also handle the InitAppointmentDisplayText event to provide custom text and a description formatted with HTML tags.
Demo Documentation
Skins and Vector Icons
New Office 2019 Skins
v19.2 introduces three new Office 2019 vector skins - White, Black, and Dark Gray.
Documentation
New Basic Skin
This release includes our brand-new vector skin (Basic) with six color variations (palettes). The Basic skin is now applied to all our WinForms controls by default.
Documentation
Spreadsheet
Excel Binary Workbook (XLSB) Support
The DevExpress Spreadsheet Document API and WinForms / WPF Spreadsheet controls now support the XLSB (BIFF12) format. You can load and save documents using this format.
Documentation
Excel 5.0/95 Workbook (BIFF5) Support
With this release, our WinForms and WPF Spreadsheet controls and Spreadsheet Document API can import documents using the Excel 5.0/95 Binary file format (BIFF5).
Status Bar
v19.2 introduces a Status Bar for our WinForms and WPF Spreadsheet controls. The status bar allows you to zoom (in or out) the current worksheet and displays the following summary information:
- Number of selected cells (Count)
- Number of selected cells with numerical values (Numerical Count)
- Average
- Minimum value (MIN)
- Maximum value (MAX)
- Sum
Documentation
Enhanced Column Width Calculation for Printed Workbooks
We now calculate column widths more accurately for printed/exported (to PDF) workbooks. The resulting printout closely mirrors the print output of Microsoft Excel.
Note: This enhancement is only available if our new Spreadsheet layout engine is enabled.
TreeList
Popup Edit Form
The Popup Edit Form allows end-users to edit column values within a modal window. To activate Popup Edit Form mode, set the OptionsBehavior.EditingMode property to TreeListEditingMode.EditForm.
Documentation
EntireBranch Filter Mode
In "EntireBranch" filter mode, our WinForms Tree List displays matching nodes along with associated parent and child nodes.
Demo Documentation
Node Expand/Collapse Menu
A new context menu allows you to expand and collapse nodes. The node menu is enabled by default.
New API includes:
- TreeList.OptionsMenu.EnableNodeMenu - enables/disables the node menu
- TreeList.OptionsMenu.ShowExpandCollapseItems - toggles the visibility of individual menu items
Documentation
High DPI Support
PerMonitorV2 Support (CTP)
As a part of our on-going commitment to our developer community, we've implemented PerMonitorV2 support for a number of DevExpress controls. This option allows controls to scale differently based upon the DPI factor applied to the display/monitor.
This DPI-aware mode requires .NET Framework 4.7 and Windows 10 (build 1703 or newer).
Blog Post
ImageOptions.ImageUri - SVG Support
When using the ImageOptions.ImageUri option, our WinForms controls use SVG images instead of raster images. To roll back to raster images, set the WindowsFormsSettings.DefaultSettingsCompatibilityMode property to "v19_1".
HTML Formatting Enhancements
With this release, you can use <sub></sub> and <sup></sup> HTML-inspired tags to display super/sub script text within individual controls.
Our new <font> tag allows you to specify custom fonts:
<font='Times New Roman'size=5 color=red>Important text</font>
We've also added an <r> tag which resets all bold, italic, underline and strike-through text back to its normal state. The <r> tag resets text formatting styles applied with other HTML tags, and appearance\skin settings.
Documentation
Miscellaneous
Data Editors
- CheckedListBoxControl includes a new ReadOnly property. Documentation
- SearchLookUpEdit can now select the first lookup record when you press ENTER. Documentation
New Server Mode Components
eXpress Persistent Objects includes new components designed for those working with large data sets. XPServerModeView and XPInstantFeedbackView are efficient read-only sources for all data-aware controls. These components feature low memory consumption and improved performance. You can find these components in the Toolbox and bind to them with the Data Source Configuration Wizard.
Read our XPO blog post to learn more about these components and advantages they feature.
Documentation Example
The new JsonDataSource component allows you to bind DevExpress data-aware controls to REST data in the JSON format. You can utilize the updated Data Source Configuration Wizard, or add the JsonDataSource component from the Visual Studio Toolbox and manually configure connection settings.
The JsonDataSource, SqlDataSource and ExcelDataSource components now offer FillAsync methods. These methods populate the data sources in another thread eliminating UI freeze. Our Data Source Configuration Wizard automatically generates the FillAsync method call for these data sources, instead of the standard Fill method call.
Documentation
Work with Images at Design Time
- You can now load vector icons from referenced project assemblies to SvgImageCollections at design time and in code. Documentation
-
Our design-time Image Picker can now export images to project resources. Documentation
Flyout Hints
You can now display a FlyoutPanel as a tooltip. FlyoutPanel is a container that can display any control. To show a FlyoutPanel as a tooltip, handle the ToolTipController.GetActiveObjectInfo event, set the e.Info.ToolTipType property to Flyout and assign a required control to e.Info.FlyoutControl.
Demo Documentation
Camera Control - DirectX Hardware Acceleration Support
Our WinForms Camera Control can now use DirectX hardware acceleration, allowing you to deliver outstanding performance on High-DPI devices (4K+).
Layout Item - Align Content API
With this release, we've hidden our ContentAlignment, TrimClientAreaToControl and FillControlToClientArea properties. We've introduced new ContentVertAlignment and ContentHorzAlignment properties designed to align controls embedded into LayoutItems.
Demo Blog Post
XtraForm - Icon Options
XtraForm and its descendants now support raster and vector images. Use the IconOptions property to configure image settings.
Blog Post Documentation
Disable Cells Conditionally
Our BehaviorManager component allows you to disable individual data cells or entire rows (when they meet a condition). Disabled cells are grayed-out according to the skin settings you've specified. End-users are not allowed to edit disabled cells.
Supported controls: Data Grid, TreeList, Vertical Grid
Demo Documentation
.NET Core 3.0 Support
Our WPF product line officially supports .NET Core 3.0 and Entity Framework Core 3.0. DevExpress WPF controls have been extensively tested and are ready for production. We encourage you to use .NET Core 3.0 in your new projects to enjoy Microsoft's latest technology enhancements.
Documentation Blog Post: .NET Core 3.0 Support Blog Post: Visual Studio Integration
Data Grid and TreeList
Conditional Formatting Filters
You can now easily filter data based on the Conditional Formatting rules defined for a column. Both the Filter Editor and the Excel-Style Drop-Down Filter can display available rules and indicate the number of records that meet rule conditions. You can also create a dedicated Filter Element for Conditional Formatting filters.
Demo Documentation Blog Post
Data Analysis Filters
The Data Grid and TreeList allow you to apply the following data analysis filters:
- Top N
- Bottom N
- Below Average
- Above Average
- Unique
- Duplicate
The Filter Editor and the Excel-Style Drop-Down Filter display the corresponding operators in their operator lists.
Demo Documentation Blog Post
Search Panel - New Parse Modes
- Exact - the search engine does not split the query into individual words and thereby searches for exact matches.
- Or - words in the search query are combined with the OR operator.
- And - words in the search query are combined with the AND operator.
Demo Documentation
Excel-Style Drop-Down Filter Enhancements
Our new Excel-Style Drop-Down Filter is now used in the Data Grid and TreeList by default. It includes various performance and stability enhancements and can now work with server-side data provided by Server Mode, Instant Feedback, or Virtual sources.
Data Grid Demo - WCF Data Services
Summary for Selection
Our WPF Data Grid and TreeList can now calculate summary values for selected rows or cells. You can enable this functionality for all group and total summaries or create individual summary items for selected rows/cells (in addition to standard totals).
Demo Documentation Blog Post
Edit Entire Row
Our WPF Data Grid and TreeList introduce a new edit mode that displays Update and Cancel buttons for an edited row. In this mode, your changes are not posted to the data source and you cannot navigate away from an edited row unless you press the Update or Cancel button.
Demo Documentation
Filtering UI Server Sources Support
Our new Filter Editor, the Excel-Style Drop-Down Filter, and Filter Elements can work with server-side data provided by Server Mode, Instant Feedback, or Virtual sources.
Charting
Waterfall
This release includes a new Waterfall chart type. Waterfall charts can help visualize positive and negative changes to values across a given time period.
Demo Documentation
Scrollbar Annotations
With scrollbar annotations, you can direct users to important information within the XY diagram. We provided annotations for the following chart elements:
- Strips
- Constant Lines
- Pane Annotations
- Series Point Annotations
- Custom Axis Labels
You can enable/disable scrollbar annotations for specific chart elements.
Demo Documentation
Box Plot
This release includes a new Box Plot chart type. Box Plot charts help you visualize data distribution across a six number summary (minimum, first quartile, median, third quartile, maximum and mean). Any data not included between minimum and maximum values are plotted as an outlier with a small circle.
Demo
TimeSpan Axis Scale Support
v19.2 introduces full support for TimeSpan scales. You can plot your TimeSpan data as-is or specify a custom aggregation mode. TimeSpan data can be mapped to an X-Axis, Y-Axis or both.
Demo Documentation
XY-Diagram Performance Improvements - Real-Time Data Updates
In v19.2, we've optimized our XY-Diagram layout calculation engine, which results in high refresh rates and smooth visualization when handling very fast-changing datasets. See the following chart for performance measurements compared to v19.1.
Diagram
Org Chart Layout
The new Org Chart automatic layout algorithm visualizes roles and relationships within an entity such as a company department. Shapes at the upper levels of the hierarchy are arranged using the "tree graph" algorithm. The number of levels in the tree section is specified by the OrgChartLayoutTreeLevelCount property.
The lower levels of the hierarchy are arranged using the "tip-over" tree layout algorithm.
Org Chart Layout Demo Documentation
Connector Labels
With this release, you can add up to four text labels to connectors. You can add two labels at the start point and two labels at the end point.
New API includes:
Connector Labels Demo
Printing - Fit to Page
You can now scale a diagram and fit it onto a single page or a fixed number of pages when printing. To scale a diagram in code, use the new overloads of the Print, QuickPrint, and PrintToPdf methods. These allow you to specify the orientation and number of pages used to fit the diagram.
End-users can set these options within the Print Preview window.
Badges
The new Badge API allows you to display badges over any control or UI element, be it a data grid column or Toolbar/Ribbon item. You can specify badge position, content, and appearance.
Badges Demo | Documentation
Data Editors
Time Picker
This release includes a new Time Picker control. This control can be used as a standalone time picker, or you can seamlessly embed it within the DevExpress DateEdit control.
Time Picker Demo Documentation
Read-Only State
With this release, data editors in a read-only state are visually distinguished from those that can be edited. This feature is available when using Office 2016 SE, Office 2019, and VS 2017 themes.
Miscellaneous Enhancements
-
You can substitute the selected value in the AutoSuggestEdit control using the new SuggestionChoosing event.
-
ButtonEdit descendants can now display a loading indicator within their text box when a time consuming operation is performed.
-
Editors can display null text when they are focused.
-
The new CheckEdit.Toggle method allows you to change the CheckEdit control's checked state.
Docking
MVVM Enhancements
- Layout Groups now offer ItemTemplate and ItemTemplateSelector properties. This allows you to build complex layouts with nested groups and panels based on source objects from your ViewModel without defining groups in the UI.
- Groups and panels generated from the LayoutGroup's ItemsSource now support all Docking operations. They can be reordered, removed, made to float or docked into other groups.
- Our DockLayoutManager no longer removes Layout Groups with the specified ItemsSource from its group collection. When a user closes all panels in such a group, the group remains hidden and appears again if its ItemSource collection is updated.
Gantt
Strip Lines
The DevExpress WPF Gantt control supports 3 strip line types:
- StripLine - a single strip line that marks a particular date and time range.
- StripLineRule - allows you to mark multiple date and time ranges based upon a specific rule.
- CurrentDateTimeStripLine - displays a strip line that points to the current date and time and updates it on-screen in real time.
You can add strip lines manually or retrieve them from a data source (or View Model).
Strip Lines Demo Documentation
Critical Path
The Gantt Control can now automatically calculate and highlight critical paths in the Gantt area. A critical path will automatically update whenever you move tasks or change the task's duration.
Critical Path Demo Documentation
Edit Events
With this release, we have added a set of events designed to improve control over end-user actions made within the Gantt area.
These events allow you to do the following:
- Snap edited date-time values (task start date, finish date, and duration) with any step.
- Provide visual feedback: highlight tasks that can be linked by an edited connector.
- Cancel any end user edit action.
Gantt Events Demo
Map
Heatmap Data Provider
v19.2 includes a new cartographic visualization option – a heat map. To create a heat map, use our new data provider (HeatmapProvider) linked to geographical point data (latitude and longitude) and define the heat map color schema using ChoroplethColorizer.
You can also change the following heatmap options: color gradient, opacity and data point radius.
Demo Documentation
In-Memory Image Tile Provider
The ImageTileDataProvider allows you to display custom tile images without saving them locally. You can load image tiles created at runtime from almost any source. To do this, create a bitmap for each tile based on its indices.
See how-to-use-in-memory-image-tile-provider (GitHub Project).
Documentation
Gradient Mode for ColorScaleLegend
This release includes a new EnableGradientScale property. Set this property to true and create a gradual blend between legend color items.
Demo Documentation
Navigation
Navigation Frame - API Enhancements
-
The new Navigation.SaveToNavigationJournal attached property allows you to save information about specific navigation steps to the navigation journal.
- The new NavigationFrame.NavigationCanceled event fires when navigation is canceled in the NavigationFrame.Navigating event handler.
-
Ribbon and Toolbar items now support attached properties.
Breadcrumb History
Like the Windows File Explorer, the Breadcrumb control can now log navigation history and display recently accessed nodes in its drop-down window.
File System Demo Documentation
Accordion Control Enhancements
- Bind to ICollectionView Sources - allows you to manipulate the current record and define rules for filtering, sorting, and grouping.
-
Unregister any key gesture within the Accordion control using the ClearHotKeys method.
Documentation
Pivot Grid
Aggregation at Any Level
This release includes an optimized Pivot Grid calculation engine for WinForms, WPF and ASP.NET. This new engine provides a more versatile summary expression function. The scope of the function is unbound fields. The Aggr function aggregates data with a specific summary function against a specific set of dimensions. Aggr functions can be nested as needed (you can easily create the desired aggregation level within the Pivot Grid control).
The Aggr function has the following syntax: Aggr(summaryExpression, dimension1, dimension2, ...)
The first argument is a summary expression calculated against a data source field. It is followed by a set of dimensions whose values are grouped to calculate summaries for the first argument.
Learn more about aggregation at any level.
Window Calculations
You can now specify the following window calculation options:
- Running Totals
- Moving Calculation
- Rank
- Difference
- Percent Of Total
- Custom Window Expression
Our new object model includes the following classes:
- RunningTotalBinding
- MovingCalculationBinding
- RankBinding
- DifferenceBinding
- PercentOfTotalBinding
- WindowExpressionBinding
These enhancements are available when our new Optimized calculation engine is activated.
Documentation
Direct Data Access in Client Mode
Our data engine loads data to local in-memory storage. This local storage is optimized for frequent calculations with typed data sets and guarantees data integrity. Some large data sets, however, may require require too large a memory footprint (which can, in turn, slow down an application).
With this release, we've added a DirectDataAccessInClientMode option. When the DirectDataAccessInClientMode option is enabled, our calculation engine does not upload source data to temporary storage. This avoids performance degradation in Client mode when working with large volumes of data (and when frequent re-calculations are unnecessary).
This option cannot be used if using the PivotGrid in Legacy mode.
Excel-Style Drop-Down Filter Enhancements
Our new Excel-Style Drop-Down Filter is now used in the Pivot Grid by default. It includes various performance and stability enhancements and can now work with server-side data provided by Server Mode.
Documentation
Rich Text Editor
Hyphenation
Our WPF Rich Text Editor now supports soft hyphens and automatic hyphenation. You can load, print and export documents with soft hyphens. End-users can insert hyphens via Ribbon UI or the Ctrl+- shortcut.
You can also enable automatic hyphenation. To do that, link a dictionary that specifies hyphenation rules.
Documentation
Track Changes
Our Rich Text Editor allows you to use Track Changes to make revisions in a document. You can access, accept or reject changes in code. New UI elements allow you to enable change tracking and display revisions. Documents with revisions can be printed and exported to PDF.
Blog Post Documentation
Theme Font Support
Our Word Processing Document API and WinForms / WPF Rich Text Editors support theme fonts. A document theme contains two sets of fonts (Headings and Body) for the entire document. Each set includes font names for different languages.
Scheduler
Time Regions
Time Regions allow you to selectively highlight certain timeframes (time cells).
Time Regions have the same recurrence settings as appointments and can be Resource-specific.
Time Regions Demo Documentation
Appointment Edit Events
New events offer extended control over appointment editing. These events include:
- AppointmentAdding
- AppointmentAdded
- AppointmentRemoving
- AppointmentRemoved
- AppointmentEditing
- AppointmentEdited
- AppointmentRestoring
- AppointmentRestored
Appointment Resize Events
New events include:
- StartAppointmentResize
- QueryContinueAppointmentResize
- ResizeAppointmentOver
- CommitAppointmentResize
- CompleteAppointmentResize
API Enhancements
- The new RecurrenceBuilder class allows you to create recurrence patterns in code-behind using a Fluent API style. It comes with a set of markup extensions to create the same recurrence patterns in XAML.
- The new SchedulerControl.ToolTipMode property allows you to display a tooltip instead of the default appointment flyout.
-
The new brush-based colorization mechanism provides simpler and more flexible customization of labels, status, and resource data. (Breaking Change)
-
Scheduler View properties can now disable the highlighting of non-working hours and even/odd months. These properties are: DayViewBase.HighlightNonworkingHours, MonthView.HighlightEvenMonths, TimelineView.HighlightNonworkingHours.
Spreadsheet
Excel Binary Workbook (XLSB) Support
The DevExpress Spreadsheet Document API and WinForms / WPF Spreadsheet controls now support the XLSB (BIFF12) format. You can load and save documents using this format.
Documentation
Excel 5.0/95 Workbook (BIFF5) Support
With this release, our WinForms and WPF Spreadsheet controls and Spreadsheet Document API can import documents using the Excel 5.0/95 Binary file format (BIFF5).
Status Bar
v19.2 introduces a Status Bar for our WinForms and WPF Spreadsheet controls. The status bar allows you to zoom (in or out) the current worksheet and displays the following summary information:
- Number of selected cells (Count)
- Number of selected cells with numerical values (Numerical Count)
- Average
- Minimum value (MIN)
- Maximum value (MAX)
- Sum
The integrated Customize Status Bar context menu allows users to display or hide status bar entries. This can also be done in code using our new API.
Documentation
Themes
Office 2019 High-Contrast Theme
This release includes a new Microsoft Outlook-inspired High-Contrast theme:
Outlook Inspired Demo
Palette Theme Cache
With v19.2, you can cache the current palette theme's assembly to load the theme faster in future application runs. The Theme class API allows you to specify the location of cached files and clear the cache when necessary.
Documentation
Theme Designer - Visual Tree and Properties Windows
In v19.2, our WPF Theme Designer introduces Visual Tree and Properties Windows. These new windows allow you to locate a UI element and its properties within XAML more quickly.
Blog Post Documentation
Windows UI
Hamburger Menu - UI Enhancements
Hamburger Menu UI elements now support the Reveal Highlight effect - an appearance option designed to mimic the look and feel of Windows UI applications. To activate Reveal Highlighting, enable the HamburgerMenu.ShowRevealHighlightEffect option.
Once enabled, the selected Hamburger Menu item displays a vertical bar on its left side to stand out from other items.
Demo
Fluent Design - Reveal Highlight (CTP)
You can now add the Reveal Highlight effect to templates used by any WPF control. The RevealHighlightOptions class automatically implements 'Reveal hover' and 'Reveal border' effects based on 'Background' and 'BorderBrush' property values.
Demo
<Border dxwui:RevealHighlightOptions.Mode="BackgroundAndBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}" />
Fluent Design - Acrylic Window (CTP)
Our Themed Window now supports the Acrylic effect (inspired by Fluent Design's Acrylic material). Acrylic turns the entire window (including the title bar) translucent, adding depth between application windows.
The AcrylicColor and AcrylicOpacity properties allow you to specify the Acrylic effect's color and opacity.
Fluent Design Calculator Demo Documentation
Data Grid
Conditional Formatting
Our Windows 10 Data Grid now supports conditional formatting. Conditional formatting allows you to change the appearance of individual cells and rows based on specific conditions.
Asynchronous Row Rendering
You can now enable the AllowCascadeUpdate option and improve the grid's performance. Visible rows are loaded one by one, in a background thread. To provide visual feedback, our data grid plays an animation during load operations.
Editors
New ComboBox and ListView Controls
Our new ListView and ComboBox controls support item grouping, multiple selection with check boxes, and can work with large data sources (UI virtualization).
TimeSpan Mask Types
The new TimeSpan and TimeSpanAdvancingCaret mask types allow our TextEdit to display and edit TimeSpan values.
NuGet Packages
A NuGet package with our UWP controls is now available via the DevExpress NuGet feed.
New Diagram (CTP)
Our new ASP.NET Diagram for Web Forms allows you to incorporate information-rich diagrams, flow charts and organization charts with ease. The Diagram control is available as a community technology preview. Features include:
- 35+ Predefined Shapes
- Custom Shapes
- Bind to Any External Data
- Shape Sizing and Drag-and-Drop
- Collapsible Containers
- Auto Layout
- ReadOnly Mode
- Configurable Page Settings
- Export to SVG, PNG and JPEG
- Zoom and Auto Zoom
- Full Screen and Simple View Modes
Demo
CardView
Edit Form Layout - Customization API
New server-side and client-side API allows you to customize the Edit Form at runtime. You can now specify item caption and toggle item/group visibility on the fly.
Demo: Web Forms Demo: MVC Documentation
Configurable Data Export
Our new BeforeExport event allows you to configure export settings in code.
Documentation
Real-Time Summary Computation Updates in Batch Edit Mode
Our Data Grid, CardView and Vertical Grid controls can now recalculate summaries on the client-side in batch edit mode. Summaries now reflect all real-time changes to grid cell values.
Documentation
Charting
Waterfall
This release includes a new Waterfall chart type. Waterfall charts can help visualize positive and negative changes to values across a given time period.
Demo Documentation
Box Plot
This release includes a new Box Plot chart type. Box Plot charts help you visualize data distribution across a six number summary (minimum, first quartile, median, third quartile, maximum and mean). Any data not included between minimum and maximum values are plotted as an outlier with a small circle.
Demo Documentation
TimeSpan Axis Scale Support
v19.2 introduces full support for TimeSpan scales. You can plot your TimeSpan data as-is or specify a custom aggregation mode. TimeSpan data can be mapped to an X-Axis, Y-Axis or both.
New Default Appearance Schema
In v19.2, we've updated the default appearance schema for our Web Forms and MVC Chart controls.
See details
Gantt (CTP)
Node Editing
The following edit actions are available:
- Resize and modify tasks
- Change dependencies between tasks
- Edit cell values within the Tree List region. The component immediately saves changes on the server and updates the Gantt chart when cell values change.
Demo
Change History
The DevExpress ASP.NET Gantt control stores changes made by an end-user. Changes can be rolled back if necessary.
Real-time Scaling
The DevExpress ASP.NET Gantt control allows you to browse data across various levels of detail. Hold the CTRL key and rotate your mouse scroll wheel to zoom (in or out).
GridView
Edit Form Layout - Customization API
New server-side and client-side API allows you to customize the Edit Form at runtime. You can now specify item caption and toggle item/group visibility on the fly.
Documentation
protected void grid_EditFormLayoutCreated(object sender, DevExpress.Web.ASPxGridViewEditFormLayoutEventArgs e) {
ASPxGridView gridView = sender as ASPxGridView;
LayoutGroup layoutGroupDismissal = (LayoutGroup)e.FindLayoutItemOrGroup("DismissalInformation");
var fireDate = gridView.GetRowValues(e.RowVisibleIndex, "FireDate");
layoutGroupDismissal.ClientVisible = fireDate != null && (DateTime)fireDate != DateTime.MinValue;
}
function onDismissalDateChanged(s, e) {
var dismissalLayoutGroup = clientGrid.GetEditFormLayoutItemOrGroup("DismissalInformation");
dismissalLayoutGroup.SetVisible(s.GetValue() != null);
}
Configurable Data Export
Our new BeforeExport event allows you to configure export settings in code.
Documentation
Real-Time Summary Computation Updates in Batch Edit Mode
Our Data Grid, CardView and Vertical Grid controls can now recalculate summaries on the client-side in batch edit mode. Summaries now reflect all real-time changes to grid cell values.
Demo: Web Forms Demo: MVC Documentation
New API
Grid Lookup
Our Grid Lookup now offers improved data selection performance when used in server mode (when the component loads the first time on a page).
File Manager
FileManager can now display folders with the same name when connected to a cloud service.
Pivot Grid
Aggregation at Any Level
This release includes an optimized Pivot Grid calculation engine for WinForms, WPF and ASP.NET. This new engine provides a more versatile summary expression function. The scope of the function is unbound fields. The Aggr function aggregates data with a specific summary function against a specific set of dimensions. Aggr functions can be nested as needed (you can easily create the desired aggregation level within the Pivot Grid control).
The Aggr function has the following syntax: Aggr(summaryExpression, dimension1, dimension2, ...)
The first argument is a summary expression calculated against a data source field. It is followed by a set of dimensions whose values are grouped to calculate summaries for the first argument.
Learn more about aggregation at any level
Window Calculations
You can now specify the following window calculation options:
- Running Totals
- Moving Calculation
- Rank
- Difference
- Percent Of Total
- Custom Window Expression
Our new object model includes the following classes:
- RunningTotalBinding
- MovingCalculationBinding
- RankBinding
- DifferenceBinding
- PercentOfTotalBinding
- WindowExpressionBinding
These enhancements are available when our new Optimized calculation engine is activated.
Documentation
Direct Data Access in Client Mode
Our data engine loads data to local in-memory storage. This local storage is optimized for frequent calculations with typed data sets and guarantees data integrity. Some large data sets, however, may require require too large a memory footprint (which can, in turn, slow down an application).
With this release, we've added a DirectDataAccessInClientMode option. When the DirectDataAccessInClientMode option is enabled, our calculation engine does not upload source data to temporary storage. This avoids performance degradation in Client mode when working with large volumes of data (and when frequent re-calculations are unnecessary).
This option cannot be used if using the PivotGrid in Legacy mode.
TreeList
Configurable Data Export
Our new BeforeExport event allows you to configure export settings in code.
Documentation
VerticalGrid
Configurable Data Export
Our new BeforeExport event allows you to configure export settings in code.
Documentation
Real-Time Summary Computation Updates in Batch Edit Mode
Our Data Grid, CardView and Vertical Grid controls can now recalculate summaries on the client-side in batch edit mode. Summaries now reflect all real-time changes to grid cell values.
Documentation
Accessibility
Accessibility enhancements allow our GridView, TreeView, File Manager and DateEdit components to better address W3C guidelines and standards.
Data Validation
To improve data integrity, Data Range validation checks data editor values (including editors in the grid's edit form) even if values stay the same.
The SpinEdit, ComboBox and RadioButtonList editors now support null value validation.
ASP.NET Core 3 Support
Our ASP.NET Core Controls are fully compatible with ASP.NET Core 3. We have also updated our Visual Studio 'Add DevExtreme to the Project' command. It is now compatible with Endpoint routing and the new JSON serialization option introduced in ASP.NET Core 3.
New Gantt (CTP)
Our new ASP.NET Core Gantt control is available as a community technology preview. Built-in features include:
- resize and modify tasks
- change dependencies between tasks
- edit cell values within the TreeList region
- change history
- region resizing
- real-time scaling
- task selection API
Demo
Diagram (CTP)
Images within Shapes
The Diagram control now provides shapes with images that were specially designed for use in OrgCharts. You can associate an image with the shape via a database or the control's UI. You can also add images to custom shapes.
Demo
Shape Containers
New shape types - horizontal and vertical containers - allow you to combine other shapes within a "container". Our Web Diagram component supports stacked containers and ships with expand and collapse functionality.
Demo
New Data Binding Capabilities
We now ship advanced data binding options for shape settings. You can bind all shape properties including shape and connectors style, shape image URL, position, and size to a database.
Full Screen Mode
Our Diagram now supports fullscreen mode. You can add a corresponding toolbar command or use the 'fullscreen' property to enable fullscreen mode within your web app.
Read Only Mode
Read only mode protects the Diagram from edit operations. Use the 'readOnly' property to enable this diagram option.
Demo
Simple View
When you activate our new Simple View mode, the Web Diagram removes gray document borders and its content fully consumes available screen real-estate.
Demo
Zoom
With this release, your end-users can zoom the diagram as needed. To change zoom level, use the 'Zoom Level' editor on the Properties panel or CTRL+Mouse scroll wheel combination. Select the 'Auto Zoom' check box to fit the diagram within the page.
UI Customization
Our new API allows you to toggle the visibility and specify the content of the following UI elements:
Demo
Data Grid and TreeList
Data Grid - Export to Excel API Enhancements (CTP)
Our Export to Excel API (CTP) was first introduced in May 2019. In v19.2, we've added the following new features:
- Only export selected rows
- Export with source column width
In addition, the 'group', 'header', 'groupFooter', and 'totalFooter' are now exported with highlighted text (bold).
We've also extended the 'CustomizeCell' callback argument set. You can access all properties of the DataGridCell object within the callback.
View code examples by individual use case
Demo - Advanced Document Customization
Reorder Records/Nodes
End-users can now reorder Data Grid rows and TreeList nodes via drag-and-drop.
Asynchronous API Enhancements
With this release, we've enabled asynchronous event handlers for the following events:
File Manager (CTP)
New Progress and Status UI
We've introduced the following UI elements to display the progress and status of file operations:
- Popup notification messages
- Enhanced 'Refresh' toolbar item
- Operation progress side panel
Integrated Splitter
The built-in splitter control allows you to resize the File Manager's navigation panel.
File Validation Enhancements
We have enhanced the validation capabilities of our File Manager. You can now specify allowed file extensions using the new 'allowedFileExtensions' option. The new 'upload.maxFileSize' option allows you to specify the maximum file size (maximum size allowed).
@(Html.DevExtreme().FileManager()
.FileProvider(provider => provider.Remote()
.Url(Url.RouteUrl("FileManagementFileSystemApi")))
.Upload(upload => upload.MaxFileSize(2048000))
.AllowedFileExtensions(new[] { ".txt", ".xml", ".doc" })
.Permissions(permissions => {
permissions.Upload(true);
})
)
Enable the server-side validation in a controller:
public IActionResult FileSystem(FileSystemCommand command, string arguments) {
var config = new FileSystemConfiguration {
MaxUploadFileSize = 2048000,
AllowedFileExtensions = new[] { ".txt", ".xml", ".doc" },
AllowUpload = true
...
};
var processor = new FileSystemCommandProcessor(config);
var result = processor.Execute(command, arguments);
return result.GetClientCommandResult();
}
Download Files
You can now allow your users to download files. Use the new 'endpointUrl' option to specify your server-side handler endpoint used for download operations.
@(Html.DevExtreme().FileManager()
.FileProvider(provider => provider.Remote()
.Url(Url.RouteUrl("FileManagementFileSystemApi")))
.Permissions(permissions => {
permissions.Download(true);
})
)
Enable the server-side validation in a controller:
public object FileSystem(FileSystemCommand command, string arguments) {
var config = new FileSystemConfiguration {
AllowDownload = true
...
};
var processor = new FileSystemCommandProcessor(config);
var result = processor.Execute(command, arguments);
return result.GetClientCommandResult();
}
Demo
Toolbar and Context Menu Customization
You can now customize the File Manager's toolbar and context menu via two new options ('toolbar' and 'contextMenu').
Demo
Custom File Providers
You can now implement a custom File Provider that allows you to connect our client-side File Manager to any custom file management backend.
Demo
Direct File Upload to Cloud Providers
You can now upload files directly to Azure, Amazon and other cloud providers. Use the FileUploader's 'uploadChunk' and 'abortUpload' callbacks.
Demo
Access File Content on the Client-Side
With this release, you can obtain binary file content info within the web browser using the 'FileProvider.getItemContent' method.
Rich Text Editor
RTF Support
Our ASP.NET Core Rich Text Editor can now open and save RTF files.
Localization
With this release, you can use the DevExpress Localization Service to customize resources for our ASP.NET Core Rich Text Editor and Spreadsheet controls.
Spreadsheet
Localization
With this release, you can use the DevExpress Localization Service to customize resources for our ASP.NET Core Spreadsheet control.
Data Visualization
Discrete Aggregation
This release includes a new 'aggregateByCategory' option. When used, this option changes the way our Chart control aggregates discrete data. If set to "true", the chart control aggregates series points for the same category.
Display Negative Values for Logarithmic Scales
Datasets that contain rapidly growing values with negative and/or zero values can now be visualized within our logarithmic axis.
Custom Legend Item Markers
You can now use a custom template to render Chart legend markers.
Template-Based Tooltip Customization
You can now use templates to customize chart tooltips.
Custom Annotations
Our Chart control now supports custom annotations. You can use a template to render the desired content within the annotation container.
Custom Text Inside a Donut
With this release, you can include custom SVG markup inside a Donut chart (your content will be placed at the center of Donut/Pie chart).
Manage Chart Pane Size
You can now control the size of chart panes. Both pixel and percentage units are supported.
Polar Chart with Zoom
To help you create the best possible interactive user experience, we've added zoom support to our Polar Chart.
VectorMap Coordinate Translation API
Thanks to your great feedback, we've introduced two new methods for coordinate translation (VectorMap). With this new API, your apps can now support more sophisticated map interaction usage-scenarios.
Themes
Custom CSS Bundles
You can now bundle CSS styles for UI components used within your application. You can also create multiple bundles of different DevExtreme Color Swatches (which contain different component sets).
UI Controls
Asynchronous Validation
We've added a new Asynchronous Validation Rule to our Validation Engine. You can now use the [Remote] attribute to perform remote data validation by calling server action methods.
When data validation is in progress, DevExtreme data editors display an animation indicator (the indicator turns into a "result" icon once validation is complete).
Data Form - Dynamic Updates without a Full Re-Render
You can customize DevExtreme Data Form item(s) within a group (add/remove/display/hide) without re-rendering the entire form.
New Drag-and-Drop Utilities
We now ship a drag-and-drop utilities library so you can implement custom drag-and-drop functionality within your web app.
Cross-Component Drag&Drop API
This new API allows you to incorporate cross-component drag & drop support.
Floating Button Enhancements
Floating Action Button enhancements include:
- Add a label to an action
- Hide an action
- Reorder actions
- Expand the speed dial menu in a different direction
Visual Studio Integration
Form Scaffolding Wizard
We added a Form to the list of controls supported by our Visual Studio Scaffolding Wizard. You can now quickly generate forms based on model classes.
DevExtreme Angular Documentation
DevExtreme-based ASP.NET Core Documentation
DevExtreme ASP.NET MVC Documentation
Async Support in API Controller Scaffolding Wizard
We've improved our API Controller Scaffolding Wizard to better leverage the asynchronous capabilities of Entity Framework and Entity Framework Core. The API Controller Scaffolding Wizard can now generate asynchronous (async-await) code for controller actions.
[HttpGet]
public async Task<IActionResult> Get(DataSourceLoadOptions loadOptions) {
var source = _db.Products.Select(p => new {
p.ProductId,
p.ProductName,
p.UnitPrice
});
return Json(await DataSourceLoader.LoadAsync(source, loadOptions));
}
DevExtreme-based ASP.NET Core Documentation
GridView and CardView
Configurable Data Export
Our new BeforeExport event allows you to configure export settings in code.
Real-Time Summary Computation Updates in Batch Edit Mode
Our Data Grid, CardView and Vertical Grid controls can now recalculate summaries on the client-side in batch edit mode. Summaries now reflect all real-time changes to grid cell values.
New Gantt Component (CTP)
Our new Gantt component for Angular, React, Vue and jQuery is available as a community technology preview. Built-in features include:
- resize and modify tasks
- change dependencies between tasks
- edit cell values within the TreeList region
- change history
- region resizing
- real-time scaling
- task selection API
Demo Documentation
Data Grid and TreeList
Reorder Records/Nodes
End-users can now reorder Data Grid rows and TreeList nodes via drag-and-drop.
Demo: Data Grid Demo: TreeList
Display Sort Indices for Multi-Column Sorting
Our DataGrid and TreeList controls can now display sort indices within column headers when data is sorted against multiple columns. This feature is optional. Enable it to visually display sort order for your end-users. Deactivate the sorting.showSortIndexes option to hide sort indices.
Demo Documentation
Asynchronous API Enhancements
With this release, we've enabled asynchronous event handlers for the following events:
Export to Excel API Enhancements (CTP)
Our Export to Excel API (CTP) was first introduced in May 2019. In v19.2, we've added the following new features:
- Only export selected rows
- Export with source column width
In addition, the 'group', 'header', 'groupFooter', and 'totalFooter' are now exported with highlighted text (bold).
We've also extended the 'CustomizeCell' callback argument set. You can access all properties of the DataGridCell object within the callback.
View code examples by individual use case
Demo - Advanced Document Customization
Diagram (CTP)
Images within Shapes
You can now associate a predefined (or custom) image with the new image shape via a database or the widget's UI. The image will maintain the shape's size and its position when the shape is moved or resized.
Demo
Shape Containers
New shape types - horizontal and vertical containers - allow you to combine other shapes within a "container". Our Web Diagram component supports stacked containers and ships with expand and collapse functionality.
Demo
New Data Binding Capabilities
We now ship advanced data binding options for shape settings. You can bind all shape properties including shape and connectors style, shape image URL, position, and size to a database.
Demo
Full Screen Mode
Our Diagram now supports fullscreen mode. You can add a corresponding toolbar command or use the 'fullscreen' property to enable fullscreen mode within your web app.
Documentation
Read Only Mode
Read only mode protects the Diagram from edit operations. Use the 'readOnly' property to enable this diagram option.
Demo Documentation
Simple View
When you activate our new Simple View mode, the Web Diagram removes gray document borders and its content fully consumes available screen real-estate.
Demo Documentation
Zoom
With this release, your end-users can zoom the diagram as needed. To change zoom level, use the 'Zoom Level' editor on the Properties panel or CTRL+Mouse scroll wheel combination. Select the 'Auto Zoom' check box to fit the diagram within the page.
Documentation
UI Customization
Our new API allows you to toggle the visibility and specify the content of the following UI elements:
Demo
File Manager (CTP)
New Progress and Status UI
We've introduced the following UI elements to display the progress and status of file operations:
- Popup notification messages
- Enhanced 'Refresh' toolbar item
- Operation progress side panel
Integrated Splitter
The built-in splitter control allows you to resize the File Manager's navigation panel.
Demo
File Validation Enhancements
We have enhanced the validation capabilities of our File Manager. You can now specify allowed file extensions using the new allowedFileExtensions option. The new upload.maxFileSize option allows you to specify the maximum file size (maximum size allowed).
{
allowedFileExtensions: [ ".txt", ".xml", ".doc" ],
upload: {
maxFileSize: 2048000
},
permissions: {
upload: true
}
}
If using our ASP.NET server-side extensions, you can enable the following server-side validation:
public IActionResult FileSystem(FileSystemCommand command, string arguments) {
var config = new FileSystemConfiguration {
MaxUploadFileSize = 2048000,
AllowedFileExtensions = new[] { ".txt", ".xml", ".doc" },
AllowUpload = true
...
};
var processor = new FileSystemCommandProcessor(config);
var result = processor.Execute(command, arguments);
return result.GetClientCommandResult();
}
Download Files
You can now allow your users to download files. Use the new endpointUrl option to specify your server-side handler endpoint used for download operations.
{
fileProvider: new DevExpress.fileProviders.WebApi({
endpointUrl: "../api/filesystem"
}),
permissions: {
download: true
}
}
If using our ASP.NET server-side extensions, you can allow users to download files as shown below:
public object FileSystem(FileSystemCommand command, string arguments) {
var config = new FileSystemConfiguration {
AllowDownload = true
...
};
var processor = new FileSystemCommandProcessor(config);
var result = processor.Execute(command, arguments);
return result.GetClientCommandResult();
}
Toolbar and Context Menu Customization
You can now customize the File Manager's toolbar and context menu via two new options (toolbar and contextMenu).
Demo
Custom File Providers
You can now implement a custom File Provider that allows you to connect our client-side File Manager to any custom file management backend.
Demo Documentation
Direct File Upload to Cloud Providers
You can now upload files directly to Azure, Amazon and other cloud providers. Use the FileUploader's uploadChunk and abortUpload callbacks.
Demo
Access File Content on the Client-Side
With this release, you can obtain binary file content info within the web browser using the 'FileProvider.getItemContent' method.
Data Visualization
Custom Annotations
Our Chart widget now supports custom annotations. You can use a template to render the desired content within the annotation container.
Demo Documentation
Custom Text Inside a Donut
With this release, you can include custom SVG markup inside a Donut chart (your content will be placed at the center of Donut/Pie chart).
Demo Documentation
Template-Based Tooltip Customization
You can now use templates to customize chart tooltips.
Demo Documentation
Custom Legend Item Markers
You can now use a custom template to render Chart legend markers.
Demo Documentation
Manage Chart Pane Size
You can now control the size of chart panes. Both pixel and percentage units are supported.
Demo Documentation
Display Negative Values for Logarithmic Scales
Datasets that contain rapidly growing values with negative and/or zero values can now be visualized within our logarithmic axis.
Demo Documentation
Discrete Aggregation
This release includes a new aggregateByCategory option. When used, this option changes the way our Chart widget aggregates discrete data. If set to 'true', the chart widget aggregates series points for the same category.
Polar Chart with Zoom
To help you create the best possible interactive user experience, we've added zoom support to our Polar Chart.
Demo Documentation
VectorMap Coordinate Translation API
Thanks to your great feedback, we've introduced two new methods for coordinate translation (VectorMap). With this new API, your apps can now support more sophisticated map interaction usage-scenarios.
Documentation: convertToXY(longitude, latitude) Documentation: convertToGeo(x, y)
Themes
Custom CSS Bundles
You can now bundle CSS styles for UI components used within your application. You can also create multiple bundles of different DevExtreme Color Swatches (which contain different component sets).
Documentation
UI Widgets
Asynchronous Validation
We've added a new Asynchronous Validation Rule to our Validation Engine. You can now specify a callback function to perform remote data validation (of any kind).
When data validation is in progress, DevExtreme data editors display an animation indicator (the indicator turns into a "result" icon once validation is complete).
Demo: Validation Demo: Form Validation
Data Form - Dynamic Updates without a Full Re-Render
You can customize DevExtreme Data Form item(s) within a group or tab (add/remove/display/hide) in code without re-rendering the entire form.
Demo
New Drag & Drop Utilities
We now ship a drag-and-drop utilities library so you can implement custom drag-and-drop functionality within your web app.
Demo
Cross-Component Drag & Drop API
This new API allows you to incorporate cross-component drag-and-drop support.
Demo: Data Grid Demo: Scheduler Demo: List
Floating Button Enhancements
Floating Action Button enhancements include:
- Add a label to an action
- Hide an action
- Reorder actions
- Expand the speed dial menu in a different direction
Demo
Angular Ivy Support
DevExtreme Angular Components now support Angular Ivy.
Native React Chart
Chart Rotation
You can now swap X and Y axis as needed.
Demos and Documentation
Native React Grid
Column Size Enhancements
You can now use ‘em' and ‘%' CSS size units to specify column width.
Virtual Table Enhancements
Our Virtual Table plugin includes the following enhancements:
- Access and track table scroll position via API
- Banded column mode
- Lazy loading with record grouping enabled
Inline Cell Editing
Inline cell editing allows end-users to place a grid cell into edit mode when a cell is clicked (without the need to press the edit button within the edit column).
Demos and Documentation
Group Row Summary
You can now display summary information within the group row.
Native React Scheduler
Today Navigation Button
We've added a 'Today' button to the React Scheduler's navigation panel. This feature was inspired by Google's Calendar. Use this button to quickly navigate to the current date.
Documentation
Recurring Appointments
You can now specify appointment recurrence patterns in code or allow end-users to configure it via our new React Scheduler Recurring Appointment edit from.
Documentation
Visual Studio Integration
Form Scaffolding Wizard
We added a Form to the list of controls supported by our Visual Studio Scaffolding Wizard. You can now quickly generate forms based on model classes.
DevExtreme Angular Documentation
DevExtreme-based ASP.NET Core Documentation
DevExtreme ASP.NET MVC Documentation
Async Support in API Controller Scaffolding Wizard
We've improved our API Controller Scaffolding Wizard to better leverage the asynchronous capabilities of Entity Framework and Entity Framework Core. The API Controller Scaffolding Wizard can now generate asynchronous (async-await) code for controller actions.
DevExtreme-based ASP.NET Core Documentation
[HttpGet]
public async Task<IActionResult> Get(DataSourceLoadOptions loadOptions) {
var source = _db.Products.Select(p => new {
p.ProductId,
p.ProductName,
p.UnitPrice
});
return Json(await DataSourceLoader.LoadAsync(source, loadOptions));
}
DevExpress UI for Blazor ships with UI components so you can design rich user experiences for both Blazor server-side and Blazor client-side platforms.
Blazor UI Components Online Demos
Download
DevExpress Blazor UI Components is available on the
DevExpress NuGet server. Find your personal NuGet feed URL in the
Download Manager and set up Visual Studio's NuGet Package Manager to proceed with installation.
Source Code
Source code is available only for active DXperience and Universal subscribers.
Licensing
The DevExpress UI for Blazor will be part of the
DevExpress ASP.NET Subscription. If you own an active ASP.NET, DXperience, or Universal Subscription, all DevExpress Blazor products will be made available to you automatically.
WinForms Reporting
New Cross Tab Control
Our new Cross Tab report control is now available for those using our Visual Studio report designer and our WinForms End-User Report Designer. While we expect to provide a similar user experience for our Web and WPF report designers in the future, all reports that rely on this new control render perfectly in browser-based and WPF applications.
The Cross Tab control resolves limitations associated with our XRPivotGrid report control and makes cross tab reporting as easy as possible. Its features include:
Design-Time Support
- A new Cross Tab report type has been added to the Report Wizard.
- You can define the cross tab layout by dragging fields from the Field List.
- The RowVisible and ColumnVisible properties allow you to display/hide rows and columns. Invisible region is populated with a hatch brush in the report designer.
Data Binding and Formatting Options
- Data Cell properties allow you to specify the summary type and the way in which a calculated value correlates to summary values in other cells.
- Tab Header Cell properties allow you to combine column and row fields into groups and apply the appropriate sort order.
- You can now pass report parameters to the control's filter string without event handling.
- You can now conditionally format cells using Expression Bindings.
- The Cross Tab control supports Report Styles. You can define the appearance of each cell region.
Layout Options
- Right-to-Left display mode.
- You can display row or column field headers in the upper left corner of the control or leave it empty.
- Multiple data field values and their associated headers can be displayed in a row or a column.
- Row or column totals can be displayed before or after data.
- The Cross Tab control can be printed in an 'across then down' mode. Pivot data is moved to the next row once it reaches the right page border.
- Row groups can be printed in a tree-like manner.
- Repeat column and row headers across page breaks.
- Cross Tab cells include an Angle property. This allows you to print column and row headers vertically.
- Column best fit.
You can easily convert the XRPivotGrid to Cross Tab via a smart tag, which includes a new 'Convert to Cross Tab' option.
Demo Blog Post | Documentation
Parameters Panel - Reset Button Behavior
The default behavior of our reset button has changed. It now reverts parameter values to their defaults.
Report Designer - Enhanced Filter Editor
We've integrated enhanced Filter Editor into Report Designer component. You can now search through data source fields while constructing a filter criterion and use custom expression functions.
Data Federation - Union Query Support
Our Federation Data Source now supports Union and UnionAll operations.
See how to bind a report to a union-based Federated Data Source.
End-User Report Designer - Properties Panel Non-Tabbed View
Use the PropertyGridDockPanel.UseTabbedView property to switch the Office-inspired Properties Panel to the non-tabbed view.
Documentation
JSON Data Source - Path Parameters Support
ASP.NET Core and Web Reporting
Web Report Designer - Usability Enhancements
Updated Project Templates
Our Web Report project templates include the following new options:
- Add Sample JSON Data Connection Storage - Registers a sample data connection storage to create JSON Data Sources in the Report and Data Source Wizards.
- Add Sample Data Object - Registers a sample data object to create Object Data Sources in the Report and Data Source Wizards.
- Enable Rich Text Editor - Provides an in-line RTF editor for the Report Designer’s RichText control.
We've also enhanced our report storage implementation across all templates. In previous versions, this implementation relied on REPX files stored in a file storage. With this release, the report storage can also open reports by individual instances and allows you to handle report events as needed.
Documentation
Updated Properties Panel
A square button near each property now indicates whether a property value differs from its default value. This button also allows you to define expression bindings. Once you specify the expression, the button changes its icon to formula (f) and displays the expression in its tooltip.
Documentation
Custom Zoom Factor
You can now input any value in the zoom toolbar editor instead of decreasing or increasing the zoom level by a predefined 5% scale.
Search in Lists
We've added incremental search functionality to the following UI elements:
- Field List
- Report Explorer
- Expression Editor (through 'Report Items' and 'Fields')
- Report and Data Source Wizards (through SQL queries and object types)
Web Document Viewer – Progress Bar Position
In previous versions, the document generation progress bar was always displayed at the bottom of the Document Viewer and could leave the visible web page area when users scrolled the page. In v19.2, the progress bar retains its position within the visible region (you can now always see the document generation progress).
We've also introduced a new API to customize the progress bar's position and behavior.
Documentation
Rename Custom Queries
You can now define a custom query's name in the Report and Data Source Wizards without invoking the Query Builder dialog.
Sync Report Names and Tab Names
A tab's caption (within the Report Designer) is now updated when you save a report with a different name.
Bind a Report to ObjectDataSource Using the Data Source Wizard
You can now select Object type in the Data Source Wizard and bind a report to a collection of business objects.
In the Data Source Wizard, you can specify the parameter expression (using the Expression Editor) and pass an existing report parameter to the constructor or the method that returns a collection of business objects.
Documentation
In-Place Rich Text Editing
Our XRRichText control allows end-users to edit its contents. Double click the control to activate the editor. The editor's popup provides various text formatting options:
- Text Alignment
- Font Style
- Font
- Font Size
- Text Foreground and Background
- Hyperlinks
Documentation
Script Support
You can now implement and use report scripts in applications that target .NET Core 2.x / 3. Install the Microsoft.CodeAnalysis NuGet package and enable script execution as described in Script Execution Mode.
End-User Report Designer - New Add Parameter Dialog
WPF Reporting
WPF Report Designer - Collapsible Bands
You can now expand and collapse bands in the DevExpress WPF Report Designer.
WPF Report Designer - Enhanced Filter Editor
We've integrated enhanced Filter Editor into our WPF Report Designer component. You can now search through data source fields while constructing a filter criterion and use custom expression functions.
Data Federation - Union Query Support
Our Federation Data Source now supports Union and UnionAll operations.
See how to bind a report to a union-based Federated Data Source.
Parameters Panel - Reset Button Behavior
The default behavior of our reset button has changed. It now reverts parameter values to their defaults.
JSON Data Source - Path Parameters Support
End-User Report Designer - New Add Parameter Dialog
All Platforms
Report Layout - Display Cross-Band Content
In previous builds, DevExpress Reporting printed all bands sequentially (one after another). With this release, you can display bands across two layers. Enable the Page Header or Group Header band's PrintAcrossBands property to display a given band's content in the background layer. As you would expect, all remaining bands will overlay this background layer once your report is generated. This new feature allows you to incorporate extended group/page watermark information or to display group/page-specific information in conjunction with detail records and footer content.
Documentation
Report Layout - Populate Free Space with Blank Rows
When printing on pre-printed forms, a set number of data rows must be printed. If actual report data is less than that needed by the pre-printed form, blank rows must be inserted as necessary.
With this release, we've added a new DetailBand.FillEmptySpace option. Enable this option to populate your report with blank rows.
Documentation
Parameters - Date Range Parameter
You can now create a DateTime range parameter. The built-in parameter panel displays a Date-Range parameter editor.
This editor has a customizable list of predefined ranges and displays two DateTime editors for custom start and end dates.
The DateTime range parameter consists of two regular parameters which can be used to filter report data at the data source and report level.
Documentation
Parameters - Define Parameter Values via Expression Binding
You can now define the default parameter value using an expression binding (the DateTime.Now constant).
Report Designer - Re-order Detail Reports in Report Explorer
With integrated Detail Report drag & drop support, your end-users can rearrange detail report hierarchies. You can drag & drop detail report bands within the Report Explorer pane, preserving report band structure.
Documentation
Report Designer - SVG Watermark
With this release, you can use a SVG image as a report's watermark.
Documentation
Crystal Reports Converter Enhancements
Our Reporting.Import tool can now convert formulas, subreports and report bands that have the 'Underlay Following Section' property enabled.
Charting - Filtering Enhancements
You can now use SeriesBase.FilterString and XRChart.Parameters to filter individual chart series.
Report and Dashboard Server
Docker Images
You can now easily deploy our Report & Dashboard Server to a Windows-based machine using the images we published on the Docker Hub.
Export API
Our new Report & Dashboard Server web API allows you to perform the following:
- Obtain documents generated by a scheduled job
- Export reports and dashboards to various file formats (e.g. .pdf, .xlsx) on-demand.
Bind Reports and Dashboards to JSON Web Services
You can now create a JSON Data Model, specify its parameters, and use it within our data source wizards.
Documentation
Bind Dashboard to OLAP Cube
You can now create an OLAP Data Model, point it to a specific OLAP cube and use our Dashboard Data Source Wizard to bind dashboard items to OLAP cubes.
Documentation
WinForms Dashboard
Asynchronous Data Processing and Rendering
We've created the first version our Dashboard's Asynchronous Data Processing and Rendering Engine for the WinForms platform. As its name implies, this engine was designed to decouple data processing from UI-related threads. Your users will be able to continue using your app while time-consuming operations are performed on the server side.
To switch the Dashboard Viewer/Designer to Async mode, you will simply set its AsyncMode property to true.
The advantages of Asynchronous Data Processing:
-
Responsiveness: Dashboard widgets are rendered more quickly. Your application will be more responsive and feel "lighter".
-
Immediate Rendering: Asynchronous data processing helps accelerate dashboard data calculations and rendering. Dashboard Items appear sequentially as they are ready. Data that is processed first appears without waiting for more time-consuming calculations.
Note: If you currently handle control events, please be aware of API changes designed to support the modified lifecycle of the Async data processing.
Read our migration guide to simplify the transition process.
Documentation
New Filter Editor
With this release, we've enhanced our Filter Editors. The new UI renders filter conditions in an easy-to-read format and uses "skin-defined" colors to clearly distinguish between operands and operators.
Web Dashboard
Web Dashboard Themes
We now include an extended web theme set to help you generate custom themes. You can use any Generic DevExtreme theme within your project. To explore this new option, open our Web Dashboard Demo and switch between themes using the dropdown button within the Dashboard Title.
For those who wish to create a custom Dashboard theme and those who have already created a custom theme using the DevExtreme ThemeBuilder, v19.2 includes our new Dashboard Theme Builder CLI (command line interface).
Our Dashboard Theme Builder CLI is a command line tool based on Node.js and was designed to work together with DevExtreme ThemeBuilder. It allows you to create a custom Web Dashboard theme with ease.
Learn more about our new Theme Builder CLI
Demo Documentation
Localization via ECMAScript Internationalization API (Intl)
With this release, you can use ECMAScript Internationalization API (Intl) to localize our Web Dashboard. This API is supported by all modern browsers and allows you to simplify the initial configuration of your HTML JS app.
Note
If you use the modular approach for HTML JavaScript Dashboard (Angular, React, Vue) and want to continue using Globalize library for localization, you will need to explicitly reference it. See details in our BC article.
Documentation
Data Inspector (Cross-Platform)
We've created a straightforward UI that allows end-users to inspect the data (underlying or aggregated, at your discretion) used to populate our visualization widgets.
The new UI is available for all supported platforms (WinForms Dashboard, WPF Dashboard, Web Dashboard).
Demo Documentation
Line Breaks and Spaces in Calculated Fields (Cross-Platform)
Expression text in Calculated Fields can now contain newline and space characters to improve readability for complex expressions.
Data Processing
Data Federation - Union Operation Support
Our Data Federation Data Source now supports Union operations. When creating a new federated query in our WinForms Wizard, you can select the appropriate operation type – Join, Union or Union All.
New API allows you to create complex queries when a Federation Data Source performs a Join operation with one data source and a Union operation with another data source. The query is generated as shown in the following code:
DashboardFederationDataSource federationDataSource = new DashboardFederationDataSource();
var msSource = new Source("MSSQL Source", msSqlDataSource, "query");
var mySqlSource = new Source("MySQL Source", mySqlDataSource, "query");
var excelSource = new Source("Excel Source", excelDataSource, "");
var query =
msSource.From().Select("ProductName", "CategoryID").Build("MSSQL select")
.UnionAll(mySqlSource.From().Select("ProductName", "CategoryID").Build("MySQL select"))
.Build("Products union")
.From().Select("ProductName")
.Join(excelSource, "[Products union].[CategoryID] = [Excel Source].[CategoryID]").Select("CategoryName")
.Build("query");
federationDataSource.Queries.Add(query);
Window Function for Calc Fields
v19.2 ships with a new w function that allows you to use Window Functions on intermediate aggregation levels.
To better illustrate this concept, see Intermediate Level Window Functions for Dashboard Users. This article gives examples of various aggregation types so you can compare and analyze.
Extract Data Source API
We extended our Extract Data Source API and made it easier to update your Extract File in the concurrent multi-user request world of the web.
In v19.2 you can use the following straightforward API:
DashboardExtractDataSource.UpdateFile(
extractDS,
(_, result) => logger.Log("onDataUpdated", result),
(_, result) => logger.Log("onFileUpdated", result));
extractDS.Dispose();
dashboardDesigner1.UpdateExtractDataSourcesAsync(
(_, result) => logger.Log("onDataUpdated", result),
(_, result) => logger.Log("onFileUpdated", result))
);
Behind the scenes, we redirect data requests to a new file and delete the old file when it is no longer necessary. This operation is seamless. No additional thread synchronization tasks are required on your end.
JSON Data Source
Use our new JSON Data Source to feed JSON data to DevExpress Dashboard - across every supported platform. End-users can create a JSON data source with the Data Source Wizard available in our WinForms Designer and Web Dashboard.
You can use the new DashboardJsonDataSource class to create the JSON data source in code.
Documentation
XPO Data Source
DevExpress Dashboard now supports XPO Data Source. You can bind your XPOBusiness Model to DevExpress Dashboard (feel free to use our WinForms Dashboard Wizard for this task).
You can also instantiate the DashboardXpoDataSource in code and add it to your dashboard / data source storage as follows:
DashboardXpoDataSource dataSource = new DashboardXpoDataSource(){ ConnectionStringName = "nwind"; };
dataSource.SetEntityType(typeof(Products));
Documentation
.NET Core Enhancements
The DevExpress Office File API for .NET Core supports the following new features:
- Ability to embed fonts in exported PDF files (Linux)
- Complex Text Layout support in both our Word Processing Document API and PDF Document API (Windows and Linux). You can now export (to PDF) documents that use RTL languages (Arabic, Hebrew, etc.)
PDF Document API
Custom Properties
With this release, you can access and modify a document's custom property collection. Use PdfDocument.CustomProperties to access the collection. You can add and delete custom properties or change associated names or values as needed.
Documentation
CCITT T.4 and CCITT T.6 TIFF Support
Our PDF Document API now allows you to directly embed TIFF images with CCITT T.4 or CCITT T.6 compression within a PDF document.
Spreadsheet Document API
Excel Binary Workbook (XLSB) Support
The DevExpress Spreadsheet Document API and WinForms / WPF Spreadsheet controls now support the XLSB (BIFF12) format. You can load and save documents using this format.
Excel 5.0/95 Workbook (BIFF5) Support
With this release, our WinForms and WPF Spreadsheet controls and Spreadsheet Document API can import documents using the Excel 5.0/95 Binary file format (BIFF5).
Print / Export To PDF Individual Sheets
We've added new Workbook.Print and Workbook.ExportToPdf method overloads to print or export to PDF sheets with the specified names.
Asynchronous Load and Save
Our new API allows you to load, save, and export workbooks to PDF and HTML asynchronously:
Enhanced Column Width Calculation for Printed Workbooks
We now calculate column widths more accurately for printed/exported (to PDF) workbooks. The resulting printout closely mirrors the print output of Microsoft Excel.
Note: This enhancement is only available if our new Spreadsheet layout engine is enabled.
Word Processing Document API
Hyphenation
Our Word Processing Document API now supports soft hyphens and automatic hyphenation. You can load, print and export documents with soft hyphens. Link a dictionary that specifies hyphenation rules to enable automatic hyphenation.
Documentation
Track Changes
Our Word Processing Document API can now retrieve, accept or reject revisions made in a document via Track Changes. Documents with revisions can also be printed and exported to PDF.
Blog Post Documentation
Theme Fonts Support
Our Word Processing Document API and WinForms / WPF Rich Text Editors support theme fonts. A document theme contains two sets of fonts (Headings and Body) for the entire document. Each set includes font names for different languages.
ASP.NET Enhancements
Batch Edit Support for Reference and ImmediatePostData Properties in ASPxGridListEditor
Reference and ImmediatePostData properties now support our ASPxGridView's Batch Edit mode.
Documentation | GitHub Example
ASP.NET Web Forms Spreadsheet Editor
XAF's Office module now supports the DevExpress ASP.NET Spreadsheet control. You can use it to display and edit Excel documents (stored in the byte array properties of your business objects).
Documentation
Core Enhancements
Asynchronous Method Support in IObjectSpace
v19.2 introduces a new ORM-agnostic IObjectSpaceAsync interface. XPObjectSpace implements this interface's asynchronous methods.
The new API allows you to execute database operations and await completion without blocking app code execution. This allows you to deliver more responsive solutions - even when connected to remote databases over slow networks.
How to perform async operations in XAF WinForms apps using IObjectSpaceAsync
.NET Standard 2.0 Support for Platform-Agnostic Modules
The following core libraries only provide non-visual APIs and do not offer a pre-built UI (like XAF modules for WinForms and Web Forms):
-
DevExpress.ExpressApp | DevExpress.ExpressApp.Xpo | DevExpress.ExpressApp.Objects | DevExpress.ExpressApp.Images.
DevExpress.Persistent.Base | DevExpress.Persistent.BaseImpl.
- DevExpress.ExpressApp.Security | DevExpress.ExpressApp.Security.Xpo.
- DevExpress.ExpressApp.Validation | DevExpress.ExpressApp.ConditionalAppearance.
- DevExpress.ExpressApp.AuditTrail | DevExpress.ExpressApp.CloneObject.
- DevExpress.ExpressApp.Kpi | DevExpress.ExpressApp.StateMachine | DevExpress.ExpressApp.ViewVariantsModule.
These libraries should be helpful to XAF developers who create cross-platform non-XAF .NET apps and libraries. You can now reuse existing XAF data models and Security System settings (users, roles and permissions) in a custom Xamarin mobile client or an ASP.NET Core service hosted on Linux-based servers.
Documentation
Security System in non-XAF .NET Apps (Powered by XPO)
We now include CRUD demos and tutorials that help explain XAF's security system and how it can be used in non-XAF .NET apps for different platforms.
Performance Enhancements
Performance and Stability Enhancements (Design-Time)
XAF's Model Editor, Application and Module Designers are now faster and require less memory. We've also reimplemented Visual Studio's ITypeDiscoveryService, because its GetTypes method caused problems, especially for complex apps.
KB Article
WinForms UI Enhancements
.NET Core 3 Desktop SDK Support in WinForms Apps
You can build and run desktop XAF applications on .NET Core 3.0. All desktop modules (except obsolete modules and those that rely on deprecated functionality - such as the Windows Workflow Foundation) are already supported. XAF for .NET Core is available as a Community Tech Preview (CTP).
Documentation
Improved Usability of Layout Groups in WinForms and Web Forms
We implemented collapsible layout groups for WinForms. We also replaced the IModelLayoutGroupWeb.IsCollapsibleCardGroup and IModelLayoutGroupWeb.IsCardGroupCollapsed properties with new platform-agnostic options: IModelLayoutGroup.IsCollapsibleGroup and IModelLayoutGroup.IsGroupCollapsed.
Documentation
XPO - ORM Library
.NET Core 3 Desktop SDK Support in WinForms & WPF Apps
XPO for .NET Core 3.0 (WinForms and WPF apps) can be added using DevExpress.WindowsDesktop.* packages from our NuGet feed.
Documentation Tutorial: Get Started witn .NET Core
ORM Data Model Designer & Wizard Enhancements
Our designer can now store connection strings in appsettings.json, generate JSON serialization and Dependency Injection extensions (all of which are very important for .NET Core projects). We also gave the designer a slight face-lift and added more meaningful error messages/text.
Documentation Blog Post
Custom Aggregates for Persistent Objects
In addition to predefined aggregates (Sum, Count, Min, Max, Avg, Single, Exists), XPO users can now implement custom aggregates. At this stage, you can use them to query data with XPO using XPQuery and with data sources that support CriteriaOperator.
Documentation GitHub Example
XPO Data Source for DevExpress Dashboard
We created a DashboardXpoDataSource component to help XPO users bind their persistent class data to DevExpress Dashboard. You can configure the new component in code or use the built-in dashboard designer.
Documentation GitHub Example (Runtime) GitHub Example (Design-Time)
New XPO Demos and Tutorials for Different Platforms
New CRUD demos and tutorials help demonstrate XPO ORM best practices and how XPO can be used in .NET apps across different platforms. We've also added a new WinForms tutorial.
GitHub Example
XPServerModeView and XPInstantFeedbackView (RTM)
Our new read-only server mode components - XPServerModeView and XPInstantFeedbackView, are mixtures of XPServerCollectionSource/XPInstantFeedbackSource and XPView for use with DevExpress Grid controls.
To help you get started with our new XPO data sources, we've integrated them into our Data Source Wizard (available for the DevExpress WinForms Data Grid and other visual components).
LINQ Enhancements
-
XPQuery now supports the SelectMany(collectionSelector, resultSelector) overload with two arguments - this simplifies LINQ queries for collections, especially many-to-many associations. In certain instances, it helps eliminate the need for the Join method.
new XPQuery<Test>()
.Where(c => c.Name == "2")
.OrderBy(c => c.Oid)
.SelectMany(c => c.ManyToManyCollection,
(t, c) => new {
Test = t, ManyToManyCollectionElement = c
}
)
.OrderBy(tc => tc.ManyToManyCollectionElement.SubName);
-
XPQuery supports the new WithDeleted option when it is initialized with a Session-based constructor.
unitOfWork.Query<Employee>()
.WithDeleted()
.Where(e => e.Name == null).ToList();
Documentation Blog Post
RushNav for VS Code
This release introduces the RushNav extension for VS Code. RushNav is a powerful new free navigation tool helping you jump to TypeScript type declarations and references with ease. RushNav also allows you to mark required parts of your code with markers and bookmarks to return to these locations at any time.
Blog Post
CodeRush Server
Install Free Preview
New Code Analysis Diagnostics
We have extended the set of code analysis rules. CodeRush Server can now detect:
Local unused variables that can be safely deleted.
Unused or assigned–only variables which can be replaced with a discard.
Redundant field initialization values which can be safely removed.
Type names that differ from the file name. These types can be moved to a new file (with the same name as the type) to improve code readability and discoverability.
Type names that do not match the name of the files containing them.
"\r\n" string values, which can be converted to Environment.NewLine calls.
String comparison expressions which can be replaced with a String.Compare call
Expressions that test a string for null (or "Nothing" in Visual Basic) or an empty value, which can be replaced with a String.IsNullOrEmpty call.
Composed string expressions which can be converted to interpolated strings.
New Refactorings
Inline Lambda
This refactoring сreates a lambda expression and inlines the referenced delegate.
Documentation
Declare Partial Class Part
The "Declare Partial Class Part" refactoring creates a class part in a new file (for the active class), declaring both classes as partial.
Import Missing Namespaces
"Import Missing Namespaces" adds using directives for each type with a missing namespace reference in the file. This refactoring is only available in Visual Studio 2019. "Import Missing Namespaces" works inside a selected code block or for an active code element (based on caret position).
Remove Unused Variables
To help you remove unused variables from your code:
We have also added the Discard Variable refactoring that replaces unused or assigned-only variables with a discard.
Remove Unused Type and Parameters
You can now use the Remove Unused Type and Remove Unused Parameter refactorings to quickly remove the corresponding unused types or parameters.
The following screencast shows Remove Unused Type in action:
Documentation
Code Cleanup
Remove Unused Variables, Types and Parameters
If you want to remove unused variables, types, and parameters across multiple files at once, you can use the Code Cleanup feature with the following rules enabled:
- Remove unused variables
- Replace unused variables with discard
- Remove unused types
- Remove unused private types
- Remove unused parameters
Improved Code Cleanup Options Page
We have completely redesigned the Code Cleanup options page. Providers now are grouped by categories. You can quickly find a required code provider specifying its name in the search field.
We have added the following options for each code action:
- Apply in Action - allows you to select which code cleanup actions will be executed when you explicitly call code cleanup.
- Apply on Save - allows you to select which code cleanup actions will be applied before files are saved.
Code Analysis
This release gets the following new code analysis diagnostics:
Unused local variable - identifies local variables which are never used in your code and can be safely deleted.
Local variable can be replaced with discard - identifies unused or assigned-only variables which can be replaced with a discard.
Redundant field initialization - identifies redundant field initialization values which can be safely removed.
The type can be moved to a separate file - identifies types whose name differ from the file name. These types can be moved to a new file (with the same name as the type) to improve code readability and discoverability.
The type name does not correspond to the file name - this issue appears in the Code Issues window if a type name does not match the name of the file that contains it.
Environment.NewLine can be used - identifies "\r\n" string values, which can be replaced with Environment.NewLine calls.
String.Compare can be used - identifies string comparison expressions which can be replaced with a String.Compare call.
String.IsNullOrEmpty can be used - identifies expressions that test a string for null (or “Nothing” in Visual Basic) or an empty value, which can be replaced with a String.IsNullOrEmpty call.
String interpolation can be used - identifies composed string expressions which can be converted to interpolated strings.
Documentation
Organize Members
We have added the "Explicit interface implementations" rule to the Default rule set.
Static constructors and explicitly-implemented interface members are now sorted correctly in the StyleCop scheme.
Member rules are now applied based on the "Rule priority" option value, followed by rule order.
Ability to wrap sorted groups in dynamic regions with built-in variables using the "Wrap distinct groups in regions" option.
Code Formatting
This release introduces new options for Other options pages.
Indent Options
The following options allow you to align comments and directives with their surrounded/following content:
- Indent comments started at the first column
- Indent region directives started at the first column
- Indent conditional compilation directives started at the first column
- Indent other directives started at the first column
XML Documentation Comments Options
You can now easily add or remove a single space in documentation lines and within tags with the following:
- Documentation lines should begin with a single space
- Add a space before self-closing tag
- Add a space after opening tag and before closing tag
We have also added options to place tags on separate lines:
- Place summary tags on separate lines
- Place all tags on separate lines
Code Places
TypeScript / JavaScript Support
Code Places now works in JavaScript and TypeScript code:
Favorite Code Places
You can favorite code places and access them instantly in the Favorites tab. Favorite places are saved across sessions.
To favorite a code place, right-click a desired member in the File Places tab, and select Add to Favorites. In the context menu, select "Add to new group" and enter a group name in the New Favorites Group dialog and press Enter.
You can also add code places to existing favorite groups. Right-click a code place in the File Places tab, and select the desired group in the Add to Favorites sub menu.
Documentation
Sort Code Places
Starting with this release, CodeRush allows you to sort code places with the following criteria:
- As Is (sorts members by the order in which they appear in the file)
- By Name (sorts members alphabetically)
- By Kind, then Name (sorts members by kind and then alphabetically)
- By Accessibility, by Kind, then Name (sorts members by accessibility, kind, and then alphabetically)
- By Kind, by Accessibility, then Name (sorts members by kind, accessibility, and then alphabetically).
You can configure code places sorting using the "Sort Code Places" option on the "Navigation | Code Places" options page.
Navigate to Member Body
Jump to member bodies by holding down the Alt key while clicking entries in the code places list.
Improved Performance for Large Files
We have significantly improved Code Places performance for large files (files with more than 3000 lines of code) in the following scenarios:
- Opening/closing documents
- Moving the caret through documents
- Switching between documents
Miscellaneous
Selection Expand/Reduce Enhancement
When using the Selection Expand/Reduce feature you can see a code preview in the code editor if a portion of the selected code falls outside the boundaries of the code editor.
To enable this new code preview, go to the Editor | All Languages | Selection options page and enable the "Show code preview hints when selection changes" option.
Grid Control
New ORM-Based Table View (Beta)
The VCL Grid Control ships with a new Table View that leverages our ExpressEntityMapping Framework and its superior data management capabilities. Like Server Mode Views, this View executes data-aware operations on the database side, allowing you to display large datasets at blazing fast speeds. In addition, the new View supports data editing and Master-Detail layouts.
v19.2 also includes a new Data Source component that binds the View directly to an entity.
Calculated Fields
With this release, the VCL Grid, TreeList, and Vertical Grid controls allow you to calculate cell values (referenced as fields) for unbound columns/rows using formulas written as string expressions. Formulas can include any number of fields, constants, operators, and functions.
tvOrdersTotal.DataBinding.Expression := '[Unit Price] * [Quantity] * [Discount] / 100';
You and your users can utilize our Expression Editor (with auto-complete support) to customize formulas.
Note: This feature uses our VCL Spreadsheet's formula engine to parse and evaluate formulas.
Scrollbar Annotations
Our Grid, TreeList, and Vertical Grid controls now support scrollbar annotations - colored markers arranged along the vertical scrollbar (or the horizontal scrollbar in the Vertical Grid control). Scrollbar annotations allow you to visualize:
- Rows that match search results
- Rows with validation errors
- Focused/selected rows
- Custom data, including hints
Users can click an annotation to bring the associated row into view.
Extended Search Capabilities
Search Mode
The DevExpress VCL Grid, TreeList, and Vertical Grid controls now offer a unique "Search" mode option. When "Search" mode is used, our controls highlight text matches within rows (non-matching values are never hidden). The Find Panel provides built-in support for this new option and displays Next/Previous buttons for quick navigation within results. When combined with scrollbar annotations, our Find Panel allows you to replicate the search behavior of modern IDEs and browsers.
Find Panel Enhancements
- You can now switch between Filter and Search modes.
- You can now search in group rows and preview sections.
NavBar Control
Hamburger Menu
This release includes a new skin-based View with a collapsed state. Our new Hamburger Menu allows you to deliver user experiences that mirror those found in Windows 10 (displays a button or a narrow strip of icons when collapsed). As a hybrid of our Accordion View and Navigation Pane View, the Hamburger Menu ships with features common to the Accordion/Navigation Pane, including nested groups and expand/collapse animation effects.
New Formatted Label
The DevExpress ExpressEditors Library now ships with a Formatted Label that allows you to display text formatted via BBCode-inspired markup tags. The following formatting options are available:
- Font face, style, and size
- Foreground and background colors
- Subscript and superscript characters
- Hyperlinks
Either add/modify markup tags as plain text or allow the Formatted Label to convert RTF text as necessary.
dxFormattedLabel1.Caption := '[B]Questions?[/B]'#13#10'Visit our [URL=https://www.devexpress.com/support/]Support Center[/URL]';
Unbound, data-aware, standalone, and in-place versions of the Formatted Label are available. The unbound version includes a design-time WYSIWYG editor for bidirectional RTF-to-markup conversion.
DPI Awareness
Per-monitor DPI Awareness v2 Support
With this release, we've added per-monitor DPI awareness v2 support to our VCL products, utility applications, and demos (for native Windows style). This option allows UI elements to scale differently based upon the DPI factor applied to the display/monitor. The new feature will be available for Windows 10 systems (build 1703 or newer).
Scheduler
Performance Enhancements
- Our enhanced Week and Month Views can now navigate dates, load events and scroll data 120 to 250 times faster than previous versions.
- Our enhanced TimeGrid View can now scroll events, scroll resources, select events and execute drag & drop operations nine to thirteen times faster than previous versions.
- Our enhanced Day View can now navigate dates, select events, and execute scroll operations twice as fast as previous versions.
Minor Enhancements
- Agenda View - You can now hide event descriptions.
- Agenda View - You can create an event via the popup menu displayed for multiple days selected in the scheduling area
- Day View – You can now scroll the all-day event region using the mouse wheel.
- TcxSchedulerDBStorage - The resource container includes properties that allow you to specify dataset fields bound to a resource's Visible, WorkDays, WorkStart, and WorkFinish properties.
Layout Control
New Check Box and Radio Button Items
These new items are a lightweight replacement to standard VCL and DevExpress check box and radio button controls. Because of our optimized painting algorithms, these new layout items improve load times when compared to use of embedded controls. Painting is now up to seven times faster.
Design-Time Control Conversion
We've added a design-time dialog to help you convert embedded controls to their built-in counterparts. To display the dialog, invoke the layout control's context menu and select "Convert Embedded Controls".
Spreadsheet
Right-To-Left Support
This release adds Right-to-Left (RTL) support to UI elements and worksheet content. We've also added an option to switch the direction of individual worksheets.
To enable RTL text in your application, switch its BiDiMode property to bdRightToLeft.
Performance Enhancements
- Our optimized formula parser allows formula-heavy documents to load approximately twice as fast (when compared to previous versions).
- "Unique Values" and "Duplicate Values" conditional formatting rules are now applied two to ten times faster (when compared to previous versions).
Miscellaneous
We've replaced the rendering engine used for rich text formatted content with the formatted label introduced in this release. This change removes the VCL Rich Edit Control dependency from the VCL Spreadsheet control and our data export methods, allowing you to reduce overall application size and memory consumption.
Charts
New Data Adapters for Cartesian and Pie Charts
v19.2 ships with new data adapters for Cartesian and Pie series:
- SeriesDataAdapter
- PieSeriesDataAdapter
- CalculatedSeriesDataAdapter.
New adapters support data collections that implement IBindingList or INotifyCollectionChanged, and allow you to bind to IList, IList<T>, and DataTable collections directly. You don't have to implement a custom data adapter.
Multiple Axes
DevExpress Xamarin.Forms Сharts now support multiple axes for improved comparative analysis.
Performance Enhancements
We have significantly improved the data processing performance of our Xamarin Charting Library. Data is now loaded at least 10x times faster than in previous builds. Loading speed nearly equals that of our native charting component for iOS and Android. For instance, you can now easily process more than 500,000 points without significant UI delay.
Miscellaneous Enhancements
We've implemented two new options for axes to help you improve the layout of your data on the chart. You can do the following:
-
Hide ranges with no data from the DateTime axis
-
Set an axis to take up only a portion of the full axis length.
You can now choose the behavior of bar labels:
-
the label stays at the fixed position of the bar;
-
the label moves along the bar.
Data Grid
Templates
With this release, you can use templates to extend the look and feel of the following grid elements:
- Column Header
- Group Row, Group Row Caption
- Group Summary
- Total Summary
- Swipe Item
Documentation
Full Swipe Action
This new option allows you to specify whether a full swipe across the row performs the first action from the 'StartSwipeItems' or 'EndSwipeItems' collection.
Input Validation and Error Indication
You can now specify your validation rules and limit the values that can be entered into data cells. Use the visualization power of the Xamarin.Forms Data Grid to provide user feedback when data does not pass rule tests.
Documentation
Line Break for Data Cells and Column Headers
Text cells and column headers now support line breaks (the TextColumn.LineBreakMode and GridColumn.HeaderCaptionLineBreakMode properties).
Multi-Line Edit Mode for Text Cells
Text cells can be edited in multi-line display mode.
Custom Group Row Height
Use the DataGridView.GroupRowHeight property to change the height of group rows.
Scrollbar Visibility
The following options allow you to display or hide scrollbars as needed:
Navigation
New TabPage Control
Our new Xamarin.Forms TabPage control implements tab navigation through a collection of pages at the application's root level.
Documentation
New DrawerPage Control
The DrawerPage is a page with a built-in drawer - a pane that slides out from the edge of the page and often includes the application's main navigation menu or settings.
Documentation
Scheduler
Scheduler View Components
We changed our Scheduler View implementation by creating separate UI View components for each Scheduler View type (Day View, Week View, Work Week View, Month View).
You can now place a specific view on a page instead of using our old SchedulerView component (used for all view types). Scheduler Views obtain data from a local or shared storage (SchedulerDataStorage) source.
Documentation
Event Reminder API
An Event Reminder API is now available. You can plug appointment reminders into the iOS and Android alarm system using the RemindersChanged event and the GetNextReminders method of the data storage object.
Documentation
Time Zone Support
Our Xamarin.Forms Scheduler ships with time zone support. You can specify a working time zone (the data storage’s TimeZone property) for the scheduler as a whole or control time zone settings for each appointment individually. You can edit time zone information within the default Edit Appointment page.
Documentation
Charts for iOS, Android and Xamarin
Multiple Axes
Our Сhart control now supports multiple axes for improved comparative analysis.
Miscellaneous Enhancements
We've implemented two new options for axes to help you improve the layout of your data on the chart. You can do the following:
-
Hide ranges with no data from the DateTime axis
-
Set an axis to take up only a portion of the full axis length.
You can now choose the behavior of bar labels:
-
the label stays at the fixed position of the bar;
-
the label moves along the bar.