WPF Elements is our extensive suite of WPF controls including a very powerful set of charting controls, a high performance DataGrid, an intelligent PropertyGrid and lots of other neat controls for all WPF application developers. Today we are announcing the release of version 7.0 of WPF Elements which now targets .Net 4.0 and includes dozens of feature additions, improvements and bug fixes that have been requested and battle hardened by our customers over the past year. Here’s a quick look at some of my favourite additions.
New Heatmap series
One of the new types of series we’ve added is the heatmap series. This takes a list of arrays that make up each column, and then displays the values as colors based on a gradient scale that you provide. The result is an extremely responsive heatmap chart like the one shown here.
To use, create a class to represent each data point which will have an X axis plot position (which could be a number, date-time or even an object) and an array of double or float values.
public class DateTimeHeatmapPoint { private DateTime _dateTime; private double[] _data; public DateTimeHeatmapPoint(DateTime dateTime, double[] data) { DateTime = dateTime; Data = data; } public DateTime DateTime { get { return _dateTime; } set { _dateTime = value; } } public double[] Data { get { return _data; } set { _data = value; } } }
Then feed the data to the chart, and setup the gradient using the usual SeriesBrush property.
<ms:Chart> <ms:HeatmapSeries ItemsSource="{Binding Data}" XBinding="{Binding DateTime}" YBinding="{Binding Data}"> <ms:HeatmapSeries.SeriesBrush> <LinearGradientBrush> <GradientStop Offset="0" Color="#3471C3" /> <GradientStop Offset="50" Color="#FFF02F" /> <GradientStop Offset="100" Color="#E10F15" /> </LinearGradientBrush> </ms:HeatmapSeries.SeriesBrush> </ms:HeatmapSeries> <ms:Chart.XAxis> <ms:ChartAxis LabelFormat="{}{0:hh:mm}" /> </ms:Chart.XAxis> </ms:Chart>
DataGrid filtering
Filtering is a fantastic feature to have on any DataGrid that has been filled with massive amounts of data. This makes it easier for your users to find items with particular property values or a range of values. Our DataGrid includes two UI options for filtering data. The first option is a special row that appears just under the column headers which can be enabled using the IsFilterRowVisible property.
<ms:DataGrid IsFilterRowVisible="True">
For each column that can be filtered, a single filtering editor is displayed. The DataGrid will automatically use an editor appropriate for the type of data. For example, enum columns will get a combo box, string and numeric columns will get a text editor. For numeric columns, users can even enter comparisons and ranges as seen in the image below.
For more diverse filtering options, use the IsColumnHeaderFilterVisible property to display a filter icon within each column header.
<ms:DataGrid IsColumnHeaderFilterVisible="True">
Again, the DataGrid will automatically use a suitable editor for the data type. Multiple values for enum columns can now be selected. Strings, numbers and date-times have more specific options as well as logical operators between filter expressions.
DataGrid aggregates and footer
Aggregates are the results of functions applied to all the data in a single column. This feature allows you to calculate and display data counts, min/max values, averages, most frequent values and any custom aggregates that you need. Aggregates can be displayed within grouping rows or/and the new footer feature. A template will automatically be selected to display the results based on the aggregates you use, and you can provide custom display templates too. These can be set up by setting the GroupingAggregate and FooterAggregate properties of each column you need.
<ms:DataGrid ItemsSource="{Binding Data}" AutoGenerateColumns="True" IsFooterVisible="True"> <ms:DataGridColumn PropertyName="Age"> <ms:DataGridColumn.FooterAggregate> <ms:MaximumAggregate /> </ms:DataGridColumn.FooterAggregate> <ms:DataGridColumn.GroupAggregate> <ms:AverageAggregate /> </ms:DataGridColumn.GroupAggregate> </ms:DataGridColumn> </DataGrid>
The aggregate feature also works very well in conjunction with the filtering feature. Users can now ask questions like “how many products were sold worth over $500″, or “What is the average speed of galaxy class starships”. They can now simply filter the relevant columns, and then see the aggregate results.
Get all this and much more right now
If you have a current WPF Elements or Megapack license, you can update to this version for free by going to your account page. If you need powerful WPF controls for your latest project, try out the free 60 day trial of WPF Elements now. If you have any questions or suggestions, we’d love to hear from you.