Pre loader

SciChart WPF v9 Released!

Categories

SciChart WPF v9 Released!

Today we are pleased to announce the release of SciChart WPF SDK v9.0! This release brings exciting new chart types, a significantly improved MVVM API, new featured examples, and performance improvements to the SciChart WPF 2D & 3D Chart control suite. 

SciChart WPF v9  (v9.0.0 build 29196) introduces the Vector Field and Stacked Box Plot chart types, a purely MVVM axis synchronization mechanism, deferred ZoomExtents for MVVM scenarios, faster MVVM axes layout, and new featured demo examples. We outline the main enhancements and features below.

We’ve moved over to a new format for communicating our releases and updates of our popular WPF Chart library, by publishing a rolling changelog of every fix or enhancement in SciChart. You can find the changelogs in the top menu at Developers -> Changelogs -> SciChart WPF ChangeLog

What’s New in v9 of SciChart’s WPF Charts?

Below is a summary of the main features and changes in this release (v9.0.0 build 29196):

  1. New Chart Type: Vector FieldRenderableSeries
  2. New Chart Type: Stacked Box PlotRenderableSeries
  3. MVVM Axis Synchronization API withRangeSyncGroupId
  4. MVVM ZoomExtentsWhenReady Extensions
  5. MVVM Axes API Performance Improvements
  6. New Featured Example: Directional Antenna Gain 3D Chart
  7. New Featured Example: Racing Telemetry Dashboard Demo
  8. New Tutorial and Documentation
  9. Bug Fixes
  10. Breaking Changes
  11. Where to get it
  12. Leaving Feedback

New Chart Type: Vector Field Renderable Series

SciChart v9 introduces the VectorFieldRenderableSeries – a new 2D chart type for rendering collections of arrows (vectors) on a plane. Each arrow originates at a data point (X, Y) and extends in the direction and magnitude defined by its displacement components (DX, DY). Vector fields are widely used to visualize directional quantities such as wind, fluid flow, electric fields, or gradient distributions. 

Two data series types are provided: UniformVectorFieldDataSeries for vectors on a regular grid (ideal for simulation output and meteorological data), and NonUniformVectorFieldDataSeries for scattered sample points (suitable for sensor readings and particle simulations). Both support polar data input. 

Key features of the Vector Field series include: 

  • Three color modes: Solid, ByMagnitude (colormap lookup by vector length), and ByDirection (colormap lookup by angle) 
  • Three vector length modes: DataUnits (faithful to data coordinates), MagnitudePixels (screen-space length proportional to magnitude), and FixedPixels (uniform arrow length, direction only) 
  • Configurable arrowhead geometry (length, width, filled/open) 
  • Built-in level-of-detail culling for large datasets 
  • Hit-testing and individual vector selection, as well as tooltips via Chart Modifiers 
  • Full MVVM support via VectorFieldRenderableSeriesViewModel 

Three new examples are included in the Examples Demo: a static Vector Field Chart with uniform and non-uniform field types, a Realtime Vector Field Chart with animated flow, and a Realtime Scattered Vector Field Chart demonstrating particle simulation with multiple palette presets. 

For more information, see the Vector Field Renderable Series documentation article.

New Chart Type: Stacked Box Plot Renderable Series 

SciChart v9 adds the StackedBoxPlotRenderableSeries – a box plot chart type that supports rendering multiple box plot bars side-by-side at the same X position. This makes it straightforward to compare statistical distributions across categories or experimental conditions. 

Like StackedColumnRenderableSeries, the new series uses a StackedGroupId property to control grouping. Series with the same StackedGroupId are laid out side-by-side and the available DataPointWidth is divided equally among all series in the group. The Spacing property controls the pixel gap between adjacent boxes. 

StackedBoxPlotRenderableSeries uses the existing BoxPlotDataSeries<TX, TY> for its data model (X, Median, Minimum, LowerQuartile, UpperQuartile, Maximum) and supports full MVVM via StackedBoxPlotRenderableSeriesViewModel. 

For more information, see the Stacked Box Plot Renderable Series documentation article. 

MVVM Axis Synchronization API

SciChart v9 introduces a purely MVVM range-synchronization mechanism for linking axis VisibleRanges across multiple charts. This is essential for dashboards where zooming or panning on one chart should update the others, and it requires no code-behind or event wiring. 

Every IAxisViewModel now exposes a RangeSyncGroupId property. Axes that share the same non-null group ID are automatically linked: when any axis in the group changes its VisibleRange, the new range is propagated to every other axis in the same group. Propagation is managed internally and requires no manual subscription:

// Create two Y Axes and sync them via the RangeSyncGroupId 
c.YAxes.Add(new NumericAxisViewModel { Id = "SpeedY_Time", AxisTitle = "Speed (kph)", RangeSyncGroupId = "GroupSpeedY", RangeSyncSourceOnZoomExtents = true }); 
c.YAxes.Add(new NumericAxisViewModel { Id = "SpeedY_Dist", AxisTitle = "Speed (kph)", RangeSyncGroupId = "GroupSpeedY" });

Range Transforms for Different Units 

When synchronized axes represent different physical units (e.g., distance vs. time, or Celsius vs. Fahrenheit), a direct range copy is incorrect. The new IRangeSyncTransform interface solves this: assign a transform to any axis whose units differ from the canonical group unit. The synchronization flow becomes: 

Sender range → ToGroupRange() → Canonical group range → FromGroupRange() → Target range 

A transformation then can be applied to an axis using the RangeSyncTransform property:

// Create two X Axes and sync them via the RangeSyncGroupId 
// Apply a range transformation via the RangeSyncTransform  
c.XAxes.Add(new NumericAxisViewModel { Id = "DistX", AxisTitle = "Distance (m)", RangeSyncGroupId = "GroupXDomain", RangeSyncSourceOnZoomExtents = true }); 
c.XAxes.Add(new NumericAxisViewModel { Id = "TimeX", AxisTitle = "Time (s)", RangeSyncGroupId = "GroupXDomain", RangeSyncTransform = new InterpolatingRangeSyncTransform(_timeX, _distanceX) });

RangeSyncSourceOnZoomExtents 

During ZoomExtents, range synchronization is automatically suppressed to prevent charts from fighting over conflicting extents. For scenarios where ZoomExtents on one chart should propagate to all synchronized peers, set RangeSyncSourceOnZoomExtents = true on the authoritative axis. That axis’s computed extents are then broadcast to the sync group, transformed through each peer’s IRangeSyncTransform as usual. 

A new tutorial, “Tutorial 10b: Synchronizing Axis Ranges with MVVM”, demonstrates RangeSyncGroupId, IRangeSyncTransform with a Celsius/Fahrenheit conversion, and RangeSyncSourceOnZoomExtents. 

For more information, see the MVVM Axis Synchronization API documentation article. 

MVVM ZoomExtentsWhenReady Extensions

In MVVM applications, Series ViewModels and their data are typically created before the SciChartSurface has attached the view models to actual RenderableSeries. Calling SciChartSurface.ZoomExtents() at this point has no effect because the chart surface is not yet ready. 

SciChart v9 adds ZoomExtentsWhenReady() – an extension method on IRenderableSeriesViewModel (and IEnumerable<IRenderableSeriesViewModel>) that defers ZoomExtents until all specified series are attached to a surface and ready for manipulation. This can be called directly from a ViewModel constructor with no reference to the SciChartSurface: 

RenderableSeries.Add(new LineRenderableSeriesViewModel  
{  
    DataSeries = ds,
    Stroke = Colors.CornflowerBlue  
});    

// Deferred ZoomExtents – fires once the surface is ready  
RenderableSeries.ZoomExtentsWhenReady(); 

An async overload, ZoomExtentsWhenReadyAsync(), is also available for scenarios where the caller needs to know whether the operation succeeded or timed out. 

For more information, see the MVVM ZoomExtents API documentation article. 

MVVM Axes API Performance Improvements

The MVVM Axes API has received significant performance optimization in v9, delivering approximately 30% faster layout and rendering for charts that use AxesBinding. This improvement is especially noticeable in dashboard-style applications with many axes per surface and multiple tabs or views that trigger frequent visual tree recreation. 

New Featured Example: Directional Antenna Radiation Pattern 3D Chart 

A new featured example demonstrates how to use SciChart 3D to create a custom 3D mesh, used to visualize a directional antenna radiation pattern. The example combines the 3D mesh with interactive 2D charts: a fan chart and gain coverage heatmap on the left, the 3D radiation pattern in the centre, and E-plane and H-plane polar charts on the right. 

The 3D scene includes a custom mesh entity rendered from a polar gain dataset, interactive phi and theta cut rings with adjustable opacity, and angle indicator arcs with text labels. Toolbar sliders control the cut angles, and draggable annotation lines on the gain heatmap are two-way bound to the sliders for seamless cross-chart interaction.

New Featured Example: Racing Telemetry Dashboard Demo

The Racing Telemetry Dashboard is a new featured multi-chart example that visualizes telemetry data from motorsport sessions. The dashboard displays synchronized distance-domain and time-domain charts showing speed, throttle, brake, steering, gear, and RPM data. 

The example showcases several SciChart v9 features working together: the new MVVM Axis Synchronization API with RangeSyncGroupId links all distance-domain and time-domain axes, IRangeSyncTransform converts between the distance and time domains in real time, and the legend is built entirely in MVVM with selection binding directly to RenderableSeries. 

New Examples, Tutorials, and Documentation

SciChart v9 includes new examples in the SciChart Examples Demo, a new tutorial in the Sandbox, and new documentation articles. 

New Examples

  • Vector Field Chart – static vector field with uniform and non-uniform data, color modes, length modes, and LOD culling controls 
  • Realtime Vector Field Chart – animated uniform-grid vector field 
  • Realtime Scattered Vector Field Chart – particle simulation with multiple palette presets 
  • Directional Antenna Radiation Pattern 3D Chart – featured application combining 3D mesh, fan chart, heatmap, and polar charts 
  • Racing Telemetry Dashboard Demo – featured multi-chart dashboard with synchronized axes and MVVM-bound series 

New Tutorials

  • Tutorial 10b: Synchronizing Axis Ranges with MVVM – step-by-step tutorial demonstrating RangeSyncGroupIdIRangeSyncTransform (Celsius/Fahrenheit), and RangeSyncSourceOnZoomExtents 
  • Worked Example – Synchronize Axes in MVVM – an article explaining how to use the new MVVM API to synchronize ranges across two charts, applying a transformation to a range

New Documentation Articles

  • Vector Field Renderable Series – comprehensive reference for VectorFieldRenderableSeries 
  • Stacked Box Plot Renderable Series – reference for StackedBoxPlotRenderableSeries 
  • MVVM Axis Synchronization API – reference for RangeSyncGroupId, IRangeSyncTransform, and ZoomExtents behaviour with synchronized axes 
  • MVVM ZoomExtents API – explains the deferred ZoomExtents for MVVM scenarios 
  • DataDistributionArgs API – new article on performance hints for DataSeries 

Other Minor Features and Enhancements 

We have added minor improvements and enhancements throughout the library. More details can be found in the SciChart WPF Changelog.

Bug Fixes

  • SC-9299 Fixed excessive spacing between the color bar and inner axis in HeatmapColorMap legends 
  • SC-9271 Fixed AccessViolationException in Digital Line Series during rendering with NaN gaps in the data 
  • Fixed an issue where IsSuspended still allowed rendering under some circumstances 

Breaking Changes in SciChart WPF v9 

Although there are some breaking changes in the SciChart WPF v9 SDK (vs version 8.x), we are hoping that for most customers SciChart WPF v9 is a drop-in replacement. 

In the majority of cases, SciChart WPF v9 should be a drop-in replacement for customers of SciChart WPF v8, with a very high proportion of backward compatible APIs. A list of breaking changes that we know about are found below. If you find more and require assistance, please contact us and our team will be happy to help. 

Platform Changes

  • Dropped .NET Core 3.1: .NET Core 3.1 (netcoreapp3.1) is no longer supported. .NET Core 3.1 reached end-of-life in December 2022. SciChart v9 targets .NET Framework 4.6.2 and .NET 6.0 (and later). If your application targets earlier .NET versions, you will need to retarget to .NET 6.0 or later before upgrading to SciChart v9. 
  • Removed SciChart.Drawing.DirectX package: The SciChart.Drawing.DirectX NuGet package has been removed. This renderer was superseded by the VisualXccelerator renderer in SciChart v6 and is no longer maintained. If your application references SciChart.Drawing.DirectX, remove the package reference and use VisualXcceleratorRenderSurface instead. 

Breaking Changes in SciChart 2D API

  • Obsolete method: SciChartSurface.UnsubscribeInnerSeriesBaseCollections() has been made Obsolete. This method was previously public but performed almost no useful work when called externally. It will be removed in a future release. 
  • Obsolete method: BaseDrawingProvider.GetVertexArray<TVertex>(int expectedCount, ref TVertex[] currentArray) static method has been made Obsolete. This is an internal utility that was previously part of the public API. 
  • Obsolete classes: The legacy axis synchronization API – AxesSynchronizationManager, AxisSynchronizationHelper, and AxisBaseViewModel.AddToSync() / RemoveAxisFromSync() – are now obsolete. They have been replaced by the new MVVM Axis Synchronization API with IAxisViewModel.RangeSyncGroupId and IRangeSyncTransform. 
  • API change: The following types have been made internal: VxPen, VxSolidColorBrush, and VxRenderSetting.Resolve(). These are internal implementation details of the VisualXccelerator renderer that were previously public. If your code references these types, please contact support for guidance on alternatives. 
  • Renamed class: PointMarkerTemplateToPropertyConverter has been renamed, fixing a typo in the original class name. If your code or XAML references the old name, update it to the corrected spelling. 
  • Behavior change: The default tooltip labels for OHLC and Candlestick charts have been changed from “Highest” and “Lowest” to “High” and “Low”, aligning with standard industry terminology. 

Breaking Changes in SciChart 3D API

  • API change: SceneEntityCollection has been made internal. This class was part of the public API but is intended to be used internally by SciChart3DSurface to manage scene entities. If your code directly instantiated or subclassed SceneEntityCollection, use the SciChart3DSurface.SceneEntities collection property instead. 

Where to get it

SciChart WPF v9 (v9.0.0 build 29196) is available by:

  • Downloading the installer from our scichart.com/downloads page
  • Using Install-Package or Update-Package from NuGet
  • By cloning and compiling the examples source code on GitHub
  • By cloning or downloading the SciChart source code on GitHub (source code customers only)

Leaving Feedback

We welcome your feedback! Please let us know what you think about our new features, examples and improvements. You can contact our friendly, helpful team at any time!

By Joeri R | Apr 23, 2026

Leave a Reply