February updates – what’s new from Mindscape?

Developer Notes

Here’s a look at this months Mindscape product updates. If you work with Javascript, make sure to take a look at Raygun.ioNow with source map support.

WPF Elements

  • Correct header when grouping enum DataGrid columns. (details)
  • Prevent grouping a column from one DataGrid to another. (details)
  • Resolved a potential memory leak after dragging a DataGrid column. (details)
  • Improved the estimate of the auto ChartAxis LabelStep feature. (details)
  • Changed DataGrid.SelectedItems to a writable dependancy property.
  • Added Many.PropertyName property. (details)
  • Update when dynamically adding series to a PolarChart. (details)
  • Resolved rare PolarChartGrid update issue. (details)
  • Support for custom display names for multiple objects in a PropertyGrid. (details)
  • Added menu scroll buttons to OfficeBlue theme. (details)
  • Support for dynamically updating style of an AreaSeries.
  • DataGrid CSV exporter support for quoted values. (details)
  • Support for PropertyDescriptor.Description when selecting multiple objects in a PropertyGrid. (details)
  • Resolved a potential divide by zero issue in the ChartAxis. (details)
  • Added DataGridItemsSource.CountOnCurrentPage property.
  • Resolved double up of SelectedItemChanged events. (details)
  • Resolved potential issues with NaN values in a ChartAxis. (details)
  • Release mouse capture after clicking on DataGrid padding column. (details)
  • Added NumericTextBox.AllowsNoValue property.
  • Special NoValue (NaN) support for DoubleTextBox.
  • Restore grouping when reloading an unloaded DataGrid. (details)
  • Improved support for strings on a chart axis. (details)
  • Resolved infinite loop when using custom data in a StockSeries. (details)

WPF Diagrams

  • Resolved issue with overriding the SnapLineDrawing when DiagramSurface is within a DataTemplate.
  • Resolved minor hit-testing issue.
  • Resolved minor binding issues.
  • Null reference fix. (details)
  • Resolved null reference exception when deleting a node while dragging or resizing it. (details)
  • Cancel marquee dragging when the DiagramSurface loses focus.
  • Added DiagramSurface.CanRelocateConnections property. (details)

Web Workbench

  • Update CoffeeScript to 1.7.1
  • Update Less to 1.6.3
  • Add new option to ignore errors returned from compiler output. (details)
  • Add IgnoreWarnings and IgnoreErrors to per file settings, no UI currently being surfaced for this. (details)
  • Add /w option to raise error code 4 if no output present but ignore errors otherwise. (details)
  • Add Uglify to NodeJS package

LightSpeed

  • Update cached entities after LockVersion is incremented.
  • Call EndEdit on associated ToOneModels.
  • Allow BeginEdit to not force lazy loading.
  • Fix for Int16 range validation issue. (details)

Raygun.io

As usual, the free editions of the nightly builds are available right now from the downloads page, and the full editions from the store.

January updates – what’s new from Mindscape?

Developer Notes

The Mindscape team is back in full force for another great year of coding! Here are some nice product updates to start the year.

WPF Elements

  • Dynamically change SeriesBrush on LineSeries. (details)
  • Improved chart performance.
  • Support for disabled foreground of cells when DataGrid is disabled. (details)
  • Added DataSeries.ConvertPhysicalToLogicalPoint method.
  • Improved bring-item-into-view feature for DataGrid.
  • Resolved issue calculating auto tick spacing for small values. (details)
  • Use Ceiling instead of Round when calculating axis ranges. (details)
  • Resolved issue with z order of chart points. (details)
  • Resolved a bug when using an ICustomTypeDescriptor within a Many editor of a PropertyGrid. (details)
  • Basic PropertyGrid support for ExpandoObject.
  • Handle mouse button up event of numeric text boxes. (details)
  • Resolved DataGrid resize issue in rare scenarios. (details)
  • Resolved potential cast exception in the VS designer.
  • Prevent DataGrid control from stealing tab navigation while in edit mode. (details)
  • Resolved minor DataGrid custom row height issue. (details)
  • Improved the DataGrid star sizing feature. (details)
  • Fixed DataGrid grouping for DataTable/DataTableView.
  • Smart scrolling for DataGrid selection.
  • Solved minor/rare measurement bug in DataGrid columns. (details)
  • Resolved a bug causing the numeric boxes to steal mouse capture. (details)
  • Resolved a DataGrid memory leak. (details)
  • Added heatmap gradient converter Orientation property. (details)
  • Resolved BindingList reset issue in DataGrid. (details)
  • Resolved a cast exception when using a custom type descriptor that return DependencyObjectPropertyDescriptors in a PropertyGrid. (details)

WPF Diagrams

  • Added a hook for custom intersection bridge validation logic. (details)
  • Fixed background of exported diagram images. (details)
  • Resolved issue preventing element to be double clicked in read only mode.
  • Resolved a bug in the default serializer that was losing user-modified segment positions.
  • Resolved redundant bounds changed event. (details)
  • Added ConnectionDropTarget.Position property. (details)
  • Resolved a bug causing the Diagram bounds to be NaN. (details)

Metro Elements

  • Added alternative X axes feature. (details)

Web Workbench

  • Support for source maps when compiling Less files. (details)
  • Resolve commands issue under Visual Studio 2013.
  • Improved performance of Compass compile.

LightSpeed

  • Suppress C# compiler warning. Caters for properties generated as field-only.
  • New function to allow custom operators.
  • Restrict warning to CTI.
  • Resolve issue with transient entities being included in migrations.
  • Surface errors raised from designer sync and provide some extra guidance.

Raygun.io

The free editions of the nightly builds are available right now from the downloads page, and the full editions from the store.

WPF Elements: Improved DateTime chart axis

Ever since version 1 of our WPF charting suite there has been support for plotting DateTime values along an axis. This is done by creating an instance of the DateTimeAxisValueConverter and using it to set the ValueConverter property of the chart axis. This gives the axis an undestanding of the type of data it is plotting so that it can automatically set the tick spacing and label values at different zoom levels. The results were reasonable, but there were many times when the spacing between labels would be nonsensical, for example, 7 minutes. Since this does not divide evenly into the 60 minutes of an hour, the labels along the axis are not that convenient to read.

In version 6.0 we greatly improved the DateTime chart axis support so that better intervals can be calculated at any zoom level. The DateTimeAxisValueConverter starts by looking at the current visible range of the axis, and determines an appropriate date/time unit to use – years, months, hours etc. Then it works out the number of those units to separate each tick mark and label. The number of separation units will divide evenly into the next date/time unit. For example minutes will divide evenly into 60, and hours will divide evenly into 24. This produces much nicer to read axes. Also, as you zoom the chart and cause the type of date/time unit to change, the format of the axis label will also change to reflect this.

Date Time Axis

Out of the box, the DateTimeAxisValueConverter will work out all this date/time unit stuff for you, but we also have a way for you to provide your own logic if you need to. This can be done by adding one or more DateTimeIntervalDefinition instances to the DateTimeValueConverter. On each interval definition, you can specify the minimum and maximum time-span that you want the definition to take effect on. Then you can set the date/time unit, the desired number of units, and the label string format. Here is a quick example:

<ms:DateTimeAxisValueConverter>
  <ms:DateTimeIntervalDefinition MinimumTimeSpan="1 Year" MaximumTimeSpan="2 Years" IntervalUnit="Month" InternalMagnitude="1" IntervalFormat="{}{0:MM yy}" />
</ms:DateTimeAxisValueConverter>

This is saying that if the range of the axis is currently between 1 and 2 years of data, then the ticks and labels will be separated by 1 month intervals. On the time-span properties we have a custom type converter that allows you to conveniently set the time values. In the above example you will see I’m simply writing “1 Year” and “2 Years”. Alternatively you can use the usual .Net TimeSpan input such as 5:0:0:0 (5 days). The intervalMagnitude value is optional. If you leave this out, the DateTimeValueConverter will take care of picking an appropriate unit count for you. This is great if you want a good value at all zoom levels but don’t want to create interval definitions for each unit count manually. If your chart is not going to be zoomed, but you still want to customize the time intervals, then you can take a shortcut by setting the IntervalUnit and IntervalMagnitude properties on the converter, rather than using an interval definition.

We hope you find the DateTime axis support useful in your applications. If you have any questions about WPF Elements charts, drop a comment on this blog post, or in the forums. If you don’t have WPF Elements yet, get the 60 day free trial now.

Tagged as WPF Elements

November updates – what’s new from Mindscape?

Developer Notes

WPF Elements

WPF Diagrams

  • Added DiagramSurface.IsVirtualizing option. (details)
  • Resolved selection bugs related to grouping. (details)
  • Resolved a selection bug when holding Ctrl or Shift in ReadOnly mode. (details)

Web Workbench

  • Update Less to 1.5.0
  • Outline and indent @include directive blocks.
  • Better handling for locating root folder.
  • Additional logic to ignore errors when compass import not found.

LightSpeed

  • Additional string parsing conversion support.
  • Use current culture for string parsing.
  • More string based parsing support for SQLite3.
  • Only care about the zero rows case.
  • Relax the OptimisticConcurrencyException check to support triggers etc. (details)
  • Switch to Invariant to match SQLite behavior.
  • Add additional IgnoreDataMember attributes. (details)

Raygun.io

  • Improved the performance across the app!
  • Improved search results
  • Several provider updates

As usual the free editions of the nightly builds are available right now from the downloads page, and the full editions from the store.

New WPF Heatmap Chart

Based on a developers request we have added a heatmap series to our WPF Elements charting suite. This is convenient for rendering heatmap images with custom color palettes on a cartesian chart. The HeatmapSeries has extremely high performance capable of rendering tens of thousands of colored points with real-time animations and still allow for smooth zooming and panning.

heatmap

The heatmap series displays a grid of colored squares based on the data you provide. The first thing you need to do to use the heatmap series is to implement a simple data point model object. A single data point is a mapping between an X axis value and array of doubles that will be used to render a single column of squares. Here is a simple example:

  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;
      }
    }
  }

The Data property provides the array of double values to plot up the Y axis, and the DateTime property is the X axis plotting value. You can use any value you want to plot against the X axis such as numbers, DateTimes, strings or other objects. Now you can create a collection filled with instances of your data point implementation and use it to set the ItemsSource property of the HeatmapSeries. Now that the data model related parts are done, let’s look at how to set up the chart in xaml:

  <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>

Here you can see the HeatmapSeries is used just like any of our other charts series. Simply add an instance of HeatmapSeries within the Chart tags and set the various options you need. Since we are using a custom data point implementation, make sure to set the XBinding and YBinding properties to point to the appropriate properties on the data point as seen above. One thing that is slightly different compared to other series is the usage of the SeriesBrush property. Here you can set any gradient brush to specify the spectrum of colors to render each square in the heatmap. You can have any number of gradient stops, and the numbers that you use for the offsets should correlate to the magnitude of the data you’ve added to the double arrays. The HeatmapSeries will interpolate this gradient brush to select a color for each point of data.

The heatmap series also supports missing data. If one of your data points returns a null array, there will be a blank column rendered at the data point. Or if a Double.NaN value is found in an array, that square of data will be skipped. You can set the HeatmapSeries.MissingColor property to specify a color to render missing data points.

You can download a demo of the HeatmapSeries from here. To run this, make sure to add a reference to your Mindscape.WpfElements.dll. Don’t have WPF Elements yet? Grab the free trial here.

If you have any questions about using the HeatmapSeries or any of our other WPF controls, we’d love to hear from you in the forum.

With all these cool new additions to WPF Elements over this past year, we’ll be rolling out version 7 soon so stay tuned!

Tagged as WPF Elements

Archives

Join our mailer

You should join our newsletter! Sent monthly:

Back to Top