What’s New in Infragistics WPF 15.1

Brian Lagunas / Monday, April 13, 2015

The Infragistics WPF 15.1 release is upon us, and it’s time to see what new major features you’ll be getting when you upgrade.  Unlike the past four releases where we saw nothing but new controls on top of new controls and features galore, this release had a different goal.  We wanted to make sure we were filling the control gaps in our WPF product offering, as well as taking time to address some of our own technical debt to improve the quality of our product too.  So that’s exactly what we did.  For the 15.1 release we committed to building a new, highly requested, tree grid control to close the control gap and then spent the entire release working on test coverage, quality improvements, and stability of our existing WPF product.  Although on the surface the 15.1 WPF release looks a little light, there was actually a ton of work done to improve the quality of the controls that your mission critical WPF applications depend on.  Let’s go ahead and dig into what we have been working on for the Infragistics WPF 15.1 release.

New xamTreeGrid

The biggest addition to the Infragistics WPF toolset for 15.1 is the new xamTreeGrid control.  Now, you may be thinking, “wait a minute Brian, I thought you’ve had a tree control the whole time”.  Well, yes we have, but a tree grid control is different than a tree control.  The xamTreeGrid displays multi-column hierarchical data.  See the big different there?  Multi-Column.  With the xamTreeGrid you can not only represent your homogeneous hierarchical data (share the same structure), but you can also display heterogeneous data (different data structures) under the same column headings.


What’s really cool about our new xamTreeGrid is that it is built on top of on our existing xamDataPresenter control, and inherits nearly all of the features that it provides. This gives you a familiar API and a seamless development experience to enable common features such as editing, filtering, sorting, summaries and more without a steep learning curve.  You will feel right at home when setting it up.


Since the xamDataTree is built on top of the existing xamDataPresenter you have been using, you automatically get all the editors you are used to when defining your columns.  This includes all of the new field specific editors that we released in 14.2.  Yes, even the awesome TemplateField which allows you to use anything just about anything you like as an editor for a particular column is there.

familar API

Filtering and Sorting

Of course the xamTreeGrid allows your end users to filter out records in order to view a smaller subset of the original data. You can expose record filtering functionality to your end users in two different ways; a filter record or a filter icon in the field headers. End-users can apply anything from a simple filter, to more complex filtering in which conditional operators can be applied to a combination of filters.  Since we are dealing with a hierarchical set of data, we provide you the ability to control how the filtered data is displayed.  For example, let’s say you are filtering for “abc” and you have a number of descendant records that match, in order to make the results easier to read, we keep the parent records in the results, but give them less importance by graying them out.  This allows you to concentrate on the results, while keeping the context of the data intact.  Need a slightly different behavior?  No worries, you can control how this works by setting the FieldLayoutSettings.FilterAction property.

xamTreeGrid filtering

Another common needs is sorting of your data.  Obvioulsy, the xamTreeGrid has support for that too. Sorting can be applied by an end-user clicking on a column header at runtime, or programmatically by the developer at design time. You can also sort the xamTreeGrid on multiple columns by holding the CTRL key and click on other field headers.



Do you need to quickly analyze your data by displaying summaries for each parent row?  Good, because we have you covered there too.  If you are not familiar with summaries; summaries are nothing more than a set of aggregate functions that allow you to perform and display calculating logic on the data. Common summaries include Sum, Max, Min, Count, and Average.  You can even create your own summaries to perform custom calculations on the available data.

xamTreeGrid summaries

MVVM Friendly

If you are using the MVVM design pattern, the xamTreeGrid will work seamlessly. The xamTreeGrid exposes properties such as SelectedDataItem and SelectedDataItems in order to access and control selections from within a ViewModel. The xamTreeGrid field definitions also support more advanced binding scenarios through the use of the CellBindings property, which allows you to data bind properties of the field editors to properties of the underlying data item. We also provide a binding markup extension called FieldBinding to simplify the binding syntax when using MVVM and binding field properties to properties in the underlying ViewModel.

xamTreeGrid MVVM support

Other Useful Features

While the xamTreeGrid was the only major component we shipped for 15.1, we did manage to get a few smaller features in that were directly requested from our Product Ideas website.  If you are not familiar with our Product Ideas website, I suggest you take a look.  If you have a feature that you would like to see implemented, then the Product Ideas website is where you need to submit them.

The xamDataGrid was given a little love for 15.1 in the form of a new MVVM friendly property called SelectedDataItem which complements the already existing SelectedDataItems property we released in 14.1. It allows you to data bind a property in the ViewModel to a single selected item in the xamDataGrid when implementing the MVVM pattern.  We also added the FieldLayoutSettings.FieldResizingArea and FieldLayoutSettings.RecordResizingArea properties that allow you to control what part of a record or field will perform a resize operation.  For example, let’s say that you only want your end-users to be able to resize a field by dragging on the field header; in that case you would set the FieldLayoutSettings.FieldResizingArea to LabelsOnly.

The cross-platform xamComboEditor finally got support for data binding to primitive types.  That’s right!  You can now data bind to a collection of string, ints, doubles, etc.,  and even enums.  I don’t consider this so much of a feature, but rather a huge bug fix.  The xamComboEditor also got the missing MinDropDownHeight property to give you full control of the dropdown portion of the control.

Finally, the xamSpreadsheet received a number of small updates.  It now support underlines and hyperlinks as well as worksheet protection.  This features are being announced now, but they have also been implemented in our latest 14.2 SR’s (service releases).  If I can get a feature in during the development of a release, I put them in the SR’s.  So, chances are if you are using the xamSpreadsheet, you have already been suing these features.  We also added some hit-testing so that you can obtain the cell that is currently being hovered over with the mouse.  It’s actually quite simple to do.  Just handle the MouseMove event and add a little logic.

xamSpreadsheet hit testing

That’s All Folks

I hope you are as excited about this release as I am.  As you have probably noticed, things are changing at Infragistics, and your voice is louder than ever.  If you have ideas about new features we should bring to our controls, important issues we need to fix, or even brand new controls you’d like us to introduce, please let us know by posting them on our Product Ideas website.  Follow and engage with us on Twitter via @infragistics. You can also follow and contact me directly on Twitter at @brianlagunas. Also make sure to connect with our various teams via our Community Forumswhere you can interact with Infragistics engineers and other customers.

If you are not using our WPF or Silverlight controls yet, remember that a free evaluation download is only a click away.

Lastly, when you do build something cool with our controls, please make sure to let us know.