XamDataGrid vs XamGrid: Which WPF Grid Should I Choose?

Brian Lagunas / Thursday, January 18, 2018

Which WPF grid should I choose; the xamDataGrid or the xamGrid?  If you use the Infragistics Ultimate UI for WPF product then you have asked yourself this question many times without a clear answer.  Well, I’m going to make the answer crystal clear for you.

Use the xamDataGrid!

There, that was easy.  Now that you have your answer, feel free to continue browsing the Infragistics blog for great content.  If you want more information about why, and what our plans are for the xamGrid, then keep reading.

But Why?

The xamGrid was the product of a need to have a cross-platform grid that allows you to share code across WPF and Silverlight. While the Infragistics Ultimate UI for WPF product has always had the xamDataGrid, it was not possible to port this grid over to Silverlight because it was built to take advantage of WPF specific APIs to squeeze every little ounce of performance we could get.  Hence, the cross-platform xamGrid was born.  Along with it was a few editors as well which were called inputs:

  • xamComboEditor - yes that's an input
  • xamCurrencyInput
  • xamDateTimeInput
  • xamMaskedInput
  • xamNumericInput

Back in the Silverlight days, the decision to use which grid should have been clear. Use the xamGrid and inputs if trying to write a cross-platform WPF and SL app.  If you’re writing a WPF only app, then use the xamDataGrid.  Simple right?  Well, not really.  Back in those days, the messaging from us about which control to use was not clear.  We failed at conveying the clear and concise message about which grid was the right grid for the app.  Now, it’s just one heck of a confusing product for developers trying to decide which control set to use.  The Infragistics Ultimate UI for WPF now has two grids, two date/time editors, two masked editors, two numeric editors, and so on.  This can make it hard to choose which controls to use in your WPF app.

To make a long story short, Silverlight is dead and so is any reason to use the xamGrid or it’s associated input controls.

Feature Disparity

While the feature parity between the xamGrid and xamDataGrid is close to 90%, there are three major features that are missing from the xamDataGrid that the xamGrid has.

These features are:

  • Cell Merging
  • Conditional Formatting
  • Paging

I know what you’re thinking; “but Brian, I use those features. I can’t use the xamDataGrid unless it has them.” Well, I have good news. Cell Merging is being added to the xamDataGrid as I write this blog and will be available in the next Infragistics Ultimate UI for WPF 18.1 release.  Conditional Formatting is scheduled for release in the Infragistics Ultimate UI for WPF 18.2 release. Paging on the other hand… well, I’m not sure if we’ll implement paging just yet.  As a developer in the enterprise world, paging never made sense to me.  With the addition of the xamDataGrid’s new async data sources in which you can asynchronously load data as you scroll from a service of your choosing and just have the values fade in, I see no real use case for paging.  If paging is a must-have for your app, please let me know.  I would love to have a conversation about that.

What’s the Plan?

Let’s address the elephant in the room.  What’s the plan with the xamGrid and its associated inputs? Honestly, if I had complete control of the universe I would get rid of them all.  I would mark the xamGrid and its inputs obsolete and have everyone move to the xamDataGrid and the WPF specific editors.  Unfortunately, I can't do that. I know there are tons of customers using these controls in their apps, and the time and effort to change their code to use a different grid and/or editor is not a trivial task.

So what is Infragistics going to do? We are going to make the message loud and clear about which controls you should be using.

You may have already noticed some small indications of this direction. Ever since the death of Silverlight, there has been no new feature work on the xamGrid. Only critical bug fixes. The xamGrid and its inputs have been removed from the Visual Studio toolbox. They have been removed from the Infragistics Ultimate UI for WPF Sample Browser.  They have been removed from the Infragistics Ultimate UI for WPF product webpage.  Basically, the only way you are even using them is if you added them to your application two years ago, or if you manually added a reference to them.

We are also going to officially stop all new feature work on the xamGrid and the associated inputs.  This really is nothing new, but it's an official statement now.  We will be updating the documentation to add a nice little "recommendation" at the top of each xamGrid and input topic so that you are constantly reminded that we want you using the xamDataGrid and WPF specific editors.  We will continue to provide support and fix any critical bugs that are reported.

The controls and their assemblies aren't going anywhere.  I want you to leave the xamGrid; the xamGrid is not leaving you.

Next Steps

Once again, I’m not going to start removing stuff and breaking everyone.  This will be a very long process (multiple years) and will give everyone plenty of time to make the move.

I also understand that this may be frustrating for a lot of people using the xamGrid and have a lot of time and code invested in it.  As a fellow developer, I completely understand the position you are in and I sincerely empathize with you.  However, I cannot sit by and let you continue to use a control that we have no intention of moving forward.  That would not be fair to you, your customers, or the company you work for.

Our investments are in the xamDataGrid. That is the grid we are moving forward.  Every release there is a new feature, improvement, or productivity tool to support it (just wait until you see the upcoming xamDataGrid control configurator). That is where I want you to be.

If you use the xamGrid and are freaking out about this blog post, please contact me. I want to put together a guide to help you migrate your code over to the xamDataGrid.  I need to know what features you are using. How you are extending the grid or customizing it.  I want to know if there is anything blocking you from moving to the xamDataGrid (for example; paging). 

Summary

To be clear, we haven’t marked anything deprecated and we aren't removing any controls or assemblies from the product. The xamGrid and its inputs will live on. They will just be in a zombie-like state. If an arm falls off, we'll put it back on. We just aren't feeding it brains anymore.

I just want to clean up the product of duplicate controls in different namespaces and make it clear which controls you should be using.

While you are more than welcome to continue to use the xamGrid, I would still highly recommend that you make the switch to the xamDataGrid at your earliest convenience.  It would be in your applications best interest to make the move.  I want you to be using the best controls we have, with the highest quality, the best performance, and the brightest future.

If you're making the move and run into any issues or missing features that are a must-have, then please let me know.

If you are impacted by this in any way, please connect with me on Twitter (@brianlagunas), or email me directly at blagunas@infragistics.com.  I would love to hear your feedback and help you with any questions or concerns you may have.