In this blog post, I’ll outline WPF Data Grid enhancements we expect to deliver in v22.2. We encourage you to answer the survey questions for each item described below. Your responses will help us fine tune our development plans.
Filter Popup, Filter Editor, Filter Panel Optimization
Our WPF Data Grid has a highly-optimized filtering engine. This engine allows you (and your users) to find records against extremely large datasets within milliseconds. This notwithstanding, our recent research demonstrated that the UI can act as a bottleneck when a filter includes hundreds of items. In our next major update, we will optimize the following Data Grid elements to enhance UI responsiveness when complex filters are applied:
- Filter Popup
- Filter Editor
- Filter Panel
- MRU Filter List
Our tests indicate that we can improve performance significantly (in the following test, we included 500 filter items):
Tree List Async Node Loading
As you know, our WPF Tree List fully supports on-demand data loading. This feature allows you to load rows only when a node is expanded. While on-demand loading reduces startup time, end-users may encounter a “frozen” UI as the TreeList expands a node with many children. In v22.2, we expect to implement asynchronous node loading and allow you to load child nodes without UI thread locking:
Here are the capabilities we expect to include with our Async Node Loading engine:
- You can dynamically determine which nodes to load in an asynchronous child node selector.
- A wait indicator will appear when a user expands a node.
- The Tree List will display additional wait indicators for nodes that must retrieve information to help determine whether to display the “+” button.
- A user can hover the loaded node’s wait indicator and cancel a load operation.
Tree List Update Optimization
Typically, it’s more efficient to process mass updates in batches so that each individual update doesn’t generate unnecessary data calculations. You can call the BeginDataUpdate and EndDataUpdate to process batch updates in the Tree List. During performance testing, we discovered that our BeginDataUpdate/EndDataUpdate implementation can be enhanced so it allocates much less memory. This will allow the garbage collector to use less CPU time. Our tests indicate that this will reduce update time by 50% when TreeList contains 1000000 nodes and 1000 new items are inserted.
Total Summary at the Top of the Data Grid
Over the last few years, users have asked us to move the summary panel to the top of the Data Grid. This may be helpful when you need to track important summary information within a Data Grid with many rows and columns.
UnboundDataType
Our WPF Data Grid allows you to use the following unbound column types: Integer, Decimal, DateTime, String, Boolean, and Object. All custom types must be used as “Object”. This requirement may produce unwanted side effects during filter and sort operations (because the Data Grid cannot determine the data property type). We expect to introduce a GridColumn.UnboundDataType property in our next release. This property will allow you specify any type for unbound columns. For example, you will be able to use types such as TimeSpan or DateTimeOffset - with accurate support for filtering, sorting and other data shaping operations.