The WPF DataGrid control is used for efficiently displaying and manipulating tabular data. Its rich feature set includes functionalities like data binding, editing, sorting, filtering, grouping, and exporting to Excel and PDF file formats. It has also been optimized for working with millions of records, as well as handling high-frequency, real-time updates.
The WPF DataGrid loads millions of records in just a second without any performance degradation with the help of row and column virtualization.
The WPF DataGrid can load millions of records instantly.
Data processing operations like sorting, filtering, grouping, summarizing, and real-time updating are handled efficiently using PLINQ.
Quickly print and export the WPF DataGrid to Excel, CSV, and PDF file formats.
The WPF DataGrid has data-binding support to work out of the box with all popular data sources like SQL Server, Oracle, data tables, and IEnumerable, and data providers like LINQ to SQL, ADO.NET, Entity Framework, and WCF Data Service.
Validate cells and display error information based on the following validation types:
Also, it’s possible to use:
Sort data against one or more columns with multiple customization operations. You can also sort by caption summary values when the grid is grouped or by writing custom logic.
Group data by one or more columns either through mouse and touch interactivity in the group drop area or in code behind. Or, you can group data with custom logic.
Filter data with the row filter or an intuitive, built-in, Excel-inspired filtering UI.
Calculate and display sum, minimum, maximum, average, count, and custom aggregates in a table or group. Calculate summaries for selected records. Display summaries with different summary types, such as:
The WPF DataGrid control can handle high-frequency updates even under the most demanding scenarios where the data is sorted and grouped in real-time. The summaries are calculated in an optimized way and the updated summaries are displayed in real-time scenarios.
Add a new record in an underlying collection with a built-in row. Place the added new row at the top or bottom or stick it at the top. It’s also possible to place a newly added row at the top or bottom in a DataGrid.
Delete selected records in a WPF DataGrid by pressing the Delete
key. You can change it to another key instead of the default, too.
Search and highlight text in the WPF DataGrid and filter records based on the search text.
Select rows or cells in a similar way to Excel for all keyboard navigations.
Customize the appearance of cells, rows, or columns based on data.
Users can adjust (auto fit) the row height based on the content of any column or certain columns to enhance the readability of content. It’s also possible to set the row height conditionally.
Users can freeze rows and columns at the top, bottom, left, and right positions, similar to in Excel. Horizontal and vertical scrolling can be performed, except on fixed columns and rows.
Display additional columns that are not bound to data. The control supports an expression to calculate values among columns.
Display rows at the top and bottom of the grid with data that is not bound to the ItemsSource.
Dynamically merge data in adjacent cells and present that data in a single cell. Merge data based on content by writing your own custom logic.
Stacked headers (multiple header rows) allow users to show unbound header rows. They span the stacked header columns across multiple rows and columns.
The WPF DataGrid provides auto-sizing options like auto-fit columns based on content, fit all columns within a view port, fill the last column to view port size, etc.
A master-details view (nested grid view) can be represented through nested grids that can be expanded and collapsed. Functionalities like editing, sorting, filtering, and grouping are supported. Unlimited levels of nested grid relationships are allowed.
Display the additional information of a row using a template. View the record template by expanding and collapsing the record as required.
Create records on demand by automatically enabling data virtualization. Load millions of records of data instantly with virtualization enabled.
Load data while horizontally scrolling (on-demand data loading). This is supported when the ItemsSource is derived from the ISupportIncrementalLoading
interface.
Manipulate data using the DataPager control to view records in multiple pages. DataPager also supports on-demand loading of data.
The appearance of a data grid and its inner elements, such as rows, cells, columns, headers, and summary rows, can be customized easily using styles and templates.
Drag and drop rows within WPF DataGrid or between controls.
Users can change the visibility of columns at runtime using the customizable column chooser UI.
The WPF DataGrid control provides an entirely custom context menu to expose the functionality on the user interface. Users can create context menus for different rows such as a record row, summary row, and group caption header in an efficient manner.
Perform clipboard operations such as cut, copy, and paste within a control and between other applications such as Notepad or Excel.
Tooltips display additional information in a pop-up window when the pointer hovers over cells in the DataGrid.
Choose from 27 built-in themes using the SfSkinManager for a rich user interface. Easily customize all aspects of the DataGrid appearance using the Theme Studio utility.
Easily export the WPF DataGrid control to various file formats such as Excel, PDF, or CSV.
Print the DataGrid with several printing customization options.
Serialize the WPF DataGrid settings to XML format and load back (deserialization) to a data grid using the built-in serialization options.
Localize all the static, default strings in the WPF DataGrid to any supported language.
DataGrid supports right-to-left (RTL) rendering for users working in right-to-left languages like Hebrew, Arabic, or Persian.
The WPF DataGrid control is compatible with Coded UI and UFT (formerly QTP) automation tools to automate an application with the DataGrid control.
The WPF DataGrid allows you to customize the gridline visibility with the following options:
Easily get started with the WPF DataGrid using a few simple lines of XAML or C# code example as demonstrated below. Also explore our WPF DataGrid Example that shows you how to render and configure the data grid.
<Window x:Class="SfDataGridSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
xmlns:local="clr-namespace:SfDataGridSample"
mc:Ignorable="d"
WindowStartupLocation="CenterScreen"
Title="MainWindow" Height="450" Width="800">
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
<Grid>
<syncfusion:SfDataGrid x:Name="dataGrid"
ItemsSource="{Binding Orders}"
AutoGenerateColumns="True"/>
</Grid>
</Window>
namespace SfDataGridSample
{
public class OrderInfo
{
int orderID;
string customerId;
string country;
string customerName;
string shippingCity;
public int OrderID
{
get { return orderID; }
set { orderID = value; }
}
public string CustomerID
{
get { return customerId; }
set { customerId = value; }
}
public string CustomerName
{
get { return customerName; }
set { customerName = value; }
}
public string Country
{
get { return country; }
set { country = value; }
}
public string ShipCity
{
get { return shippingCity; }
set { shippingCity = value; }
}
public OrderInfo(int orderId, string customerName, string country, string customerId, string shipCity)
{
this.OrderID = orderId;
this.CustomerName = customerName;
this.Country = country;
this.CustomerID = customerId;
this.ShipCity = shipCity;
}
}
public class ViewModel
{
private ObservableCollection<OrderInfo> _orders;
public ObservableCollection<OrderInfo> Orders
{
get { return _orders; }
set { _orders = value; }
}
public ViewModel()
{
_orders = new ObservableCollection<OrderInfo>();
this.GenerateOrders();
}
private void GenerateOrders()
{
_orders.Add(new OrderInfo(1001, "Maria Anders", "Germany", "ALFKI", "Berlin"));
_orders.Add(new OrderInfo(1002, "Ana Trujilo", "Mexico", "ANATR", "Mexico D.F."));
_orders.Add(new OrderInfo(1003, "Antonio Moreno", "Mexico", "ANTON", "Mexico D.F."));
_orders.Add(new OrderInfo(1004, "Thomas Hardy", "UK", "AROUT", "London"));
_orders.Add(new OrderInfo(1005, "Christina Berglund", "Sweden", "BERGS", "Lula"));
}
}
}
The Syncfusion WPF DataGrid supports the following features:
No, this is a commercial product and requires a paid license. However, a free community license is also available for companies and individuals whose organizations have less than $1 million USD in annual gross revenue, 5 or fewer developers, and 10 or fewer total employees.
A good place to start would be our comprehensive getting started documentation.
Greatness—it’s one thing to say you have it, but it means more when others recognize it. Syncfusion is proud to hold the following industry awards.