RSS Feed
Latest Updates

A while ago we announced we had open sourced the small but useful WPF Transitionz library for Metro Style Animation effects in WPF applications. To our surprise this now has over 5,000 downloads on and even received a couple of questions & bug reports via the Github repository!

We’re using the four libraries in SciChart.Wpf.Ui in our SciChart WPF Examples Suite, and also starting to use them in consultancy projects, so we’ve updated them for 2018 to be compatible with .NET Standard 2.0 and .NET 4.6.1, plus fixed a number of bugs & added other improvements.

What’s in SciChart.Wpf.UI ?

So what’s in this mysterious collection of open source libraries? A quick run-down below.


Supporting .NET Standard 2.0 / .NET Framework 4.6.1 and above, this library includes bootstrapper classes for WPF Applications using Unity and allowing automatic dependency discovery across a range of assemblies.

See the Bootstrap Library Overview page at SciChart.Wpf.UI.

To use it,

  1. Decorate your types with the [ExportType] attribute
    	public interface IFoo
    	// This type is automatically registered with the Unity Container
    	// Every time IFoo is resolved, you get a new instance
    	public class Foo : IFoo
    		// Any other registered dependency can go in the constructor
    		public Foo(IUnityContainer container)
  2. Create a Bootstrapper and initialize public partial class App : Application
        public partial class App : Application
            private AbtBootstrapper _bootstrapper;
            public App()
                _bootstrapper = new AbtBootstrapper(new UnityContainer(), new AttributedTypeDiscoveryService(new AutoAssemblyDiscovery()));
                 // At this point, your container now contains all the types decorated with [ExportType] attribute
                 // You may resolve them as normal in Unity 
  3. Now your application has UnityContainer powered dependency injection in just a few lines of code!



The SciChart.UI.Reactive library supports .NET Standard 2.0 / .NET Framework 4.6.1 and above provides observable viewmodels which combine INotifyPropertyChanged event notifications for WPF, and Reactive IObservable streams for observing individual, or combinations of properties.

See Reactive Library Overview and Reactive Library WhenPropertyChanged wiki pages.

The main benefit of this library is that it brings the incredible power of Reactive Extensions to MVVM in WPF applications. You declare a class like this:

public class WhenPropertyChangedTests : ObservableObjectBase
    public string SearchText
        get => GetDynamicValue();
        set => SetDynamicValue(value);

    public SearchOptions SearchOptions
        get => GetDynamicValue();
        set => SetDynamicValue(value);

and now any of these properties raise both PropertyChanged events as well as a reactive stream (IObservable<T>). You also don’t have to create a backing field making all your properties, these are stored in the base class (ObservableObjectBase) in a dictionary.

Properties may now be observed using Reactive Extensions as follows:

void Foo()
	// Create the ViewModel
	WhenPropertyChangedTests vm = new WhenPropertyChangedTests();

	// Observe properties
	var observable1 = vm.WhenPropertyChanged(x => x.SearchText);
	var observable2 = vm.WhenPropertyChanged(x => x.SearchOptions);

	// Subscribe 
	var disposable = observable1.Subscribe(t => Console.WriteLine($"Search Text = '{t}'"));

	// Set properties 
	vm.SearchText = "Hello"; // -> Should output 'Search Text = 'Hello'' to console
	vm.SearchText = "World"; // -> Should output 'Search Text = 'World'' to console


	vm.SearchText = "Not observed"; // nothing happens 

and multiple properties may be observed using Observable.CombineLatest

void Foo()
    // Create the ViewModel
    WhenPropertyChangedTests vm = new WhenPropertyChangedTests();

    // Observe properties
    var observable1 = vm.WhenPropertyChanged(x => x.SearchText);
    var observable2 = vm.WhenPropertyChanged(x => x.SearchOptions);

    // Subscribe 
    var disposable = Observable.CombineLatest(observable1, observable2, Tuple.Create)
        .Subscribe(t => Console.WriteLine($"Search Text = '{t.Item1}', Options = '{t.Item2}'"));

    // Set properties 

    // -> Should output 'Search Text = 'Hello', Options = 'AnOption'' to console
    vm.SearchText = "Hello";
    // -> Should output 'Search Text = 'Hello', Options = 'AnotherOption'' to console 
    vm.SearchOptions = SearchOptions.AnotherOption;
    // -> Should output 'Search Text = 'World', Options = 'AnotherOption'' to console
    vm.SearchText = "World";


    vm.SearchText = "Not observed"; // nothing happens 

If you haven’t checked out Reactive Extensions yet and seen what it can do for your WPF applications, or even server-side applications, then do so. It’s brilliant!

Learning resources:


The Transitionz library seems pretty popular with WPF developers as it provides a very simple way to animate elements on the UI with just Xaml attached properties.

Transitionz supports WPF / .NET 4.6.1 and above and allows the following effects in your application:

  1. Fade / Animate Opacity
  2. Translate / Animate position
  3. Scale / Animate size
  4. Blur / Animate blur factor

All Transitionz animations may be triggered on:

  1. On Visibility (e.g. Animate opacity on visibility changed)
  2. On DataContextChanged (e.g. trigger an animation when new DataContext attached)
  3. On Loaded (e.g. when the control.Loaded event fires)
  4. or .. Once (e.g. consider OnLoaded will fire each time the control is loaded, wheareas once ensures just one-time operation)
  5. Explicity, by binding to or setting Transition Params

Head over to the Transitionz Library wiki page for more information. We also have a small test-app bundled with SciChart.WPF.UI which demonstrates this functionality.

Transitionz WPF Animation Library



The SciChart.Wpf.UI assembly supports WPF / .NET 4.6.1 and above, and brings a number of useful controls to WPF applications, and metro styles based on MahApps.Metro. Controls include:

  • BusyPanelA panel which displays a spinner / hides content while BusyMessage is not null, shows the content when BusyMessage is null.
  • PopupHostA control to host popups which can be shown inside a WPF app with animated show & hide. The background can be blurred out or made darker, similar to a web popup.
  • WarningDialogA Metro-style warning dialog which pops up to prompt the user, and provides some Yes/No/Ok/Cancel buttons
  • Miscellaneous controls and classes, such as the LabelControl, ExceptionViewer,


SciChart.WPF.UI BusyPanel and Popups


Where to Get it

The SciChart.WPF.UI libraries are free & open source and may be used in commercial projects under the Apache 2.0 license. Packages are published to and source code is available on Github.


About Us

SciChart is a self-funded and profitable startup based in London, U.K., which specialises in High Performance, Realtime Chart controls as well as expert consultancy in complex .NET UI / Server applications.

Connect with me on LinkedIn to find out more about our background and capabilities. If you have a bespoke requirement and want to hire our world-class consultants, then get in touch!



The post Open Source SciChart.UI.Reactive and SciChart.WPF.UI.Transitionz v2.1 Released appeared first on Fast, Native Chart Controls for WPF, iOS, Android and Xamarin.

Read more »

Performance debugging: Improving the speed of charts when many NaN
Posted by Andrew on 02 November 2018 12:33 PM

In this video below we have taken an example provided by a customer and shown how to improve the performance of SciChart from stuck UI to real-time when there are several series with millions of points and a high proportion of NaN gaps.

The direct video link is here.

If you have a performance issue with SciChart, and you are in support-subscription, then feel free to contact our tech-support team and we will be glad to help!

Best regards,

The post Performance debugging: Improving the speed of charts when many NaN appeared first on Fast, Native Chart Controls for WPF, iOS, Android and Xamarin.

Read more »

SciChart WPF, Xamarin.iOS, Xamarin.Android now listed on
Posted by Andrew on 19 October 2018 06:50 PM

For years we’ve operated a private NuGet feed for our libraries in SciChart, however recently we’ve taken the step to publish official releases to as well.

Version has been published to and the following packages are now available.

In future we will continue to publish nightly builds and alpha/beta builds to our abtsoftware-bleeding-edge feed, as well as official builds to our abtsoftware feed, but stable builds which have passed testing for official releases will also be mirrored to

Happy coding!

Best regards,

The post SciChart WPF, Xamarin.iOS, Xamarin.Android now listed on appeared first on Fast, Native Chart Controls for WPF, iOS, Android and Xamarin.

Read more »

SciChart iOS /Android / Xamarin v2.2.1 released!
Posted by Julia Skorobogata on 18 October 2018 11:42 AM

We are really excited to announce, that SciChart iOS/ Android / Xamarin v2.2.1 is released! 

What’s New in SciChart iOS /Android /Xamarin v 2.2.1?

There is a large number of improvements and bug fixes made in SciChart iOS/ Android / Xamarin v2.2.1. We have made many improvements and bug fixes, major memory leaks have been fixed. It is recommended for all users of SciChart v2.1 to update to the latest version! Please see more information below:

  • Made SCIChartSurfaceProtocol conform to SCIChartControllerProtocol
  • Logarithmic axis zoom extents is fixed by SCILogarithmicVisibleRangeAnimator
Bug Fixes:
  • SCIOS-626: Fixed HorizintalLineAnnotation and VerticallLineAnnotation are not clipped by axes and are drawn over them
  • SCIOS-642: Fixed issue with on resize of the SCIChartSurface, lay out the axis labels
  • SCIOS-637: refactored internal scroll and removed velocityValue from improper places, fixed crash caused by SCILogarithmicDoubleCoordinateCalculator not having implemented getVelocityValueFrom
  • SCIOS-672: Fixed chart sync crash (EOG) – caused by TooltipShowOnTouch
  • SCIOS-596: Fixed Error during rendering of the first point when ifDigitalLine = true
  • Fixed major memory leaks in SciRenderable series
  • SC_DROID-558: added check to prevent exception during generation of minor ticks if there are no major ticks
  • SCIOS-682: Fixed iOS annotations seem to update independently from the data series
  • SC_DROID-562: Fixed memory leak in SpritePointMarker when textures were constantly recreated and never properly disposed because of wrong texture hash
  • SC_DROID-564: Fixed incorrect drawing of axis tick label – because StaticLayout had not enough space to fit label in one string so some labels were drawn as two lines of text;
  • SC_DROID-566: Fixed some logcat errors when OpenGL code was called without OpenGL context
  • Fixed SCIOS-687 – surface.Annotations.Clear() doesn’t clear all annotation from surface.
  • SC_DROID-568: Fixed exception because of how onSurfaceCreated() is implemented in GlSurfaceView ; refactored OpenGL renderer to avoid exception because of missing native memory chunk and made it resizable; also moved OpenGL programs creation so they are created only once
  • Fixed SCICustomAnnotation position in chart wrong
  • Fixed SCIXAxisDragModifier stopped working
  • Fixed SCILegendModifier: SCIDefaultLegendItem cell ambiguous width
  • Fixed text annotation formatting
  • Fixed exception if enable debug prints for CubicSpline
  • SC_DROID-566: improving OpenGL start up time – changed GLProgram implementation and made it lazy so we don’t initialize all shaders at once when render surface created
  • SC_DROID-565: added additional render pass data locks to ensure that it won’t be changed from another thread when applying transformation
  • Added default style values for PieSegment; added some common methods for PieSegmentBuilder
  • SC_DROID-563: rewritten GLTextureView rendering from scratch – now it uses Handler + Choreographer to schedule redrawing of render surface when VSync occurs in Android
  • Made custom annotations to support AnchorPoint alignment
  • SC_DROID-578: added propagating of listeners to child series for StackedSeriesCollectionBase
  • SC_DROID-561: added synchronized wrapper for SimpleDateFormat to prevent exception when same instance is accessed from different threads, applied the same approach to prevent possible exceptions when using DecimalFormat

Where to get iOS / Android / Xamarin v2.2.1?

You can get the SciChart iOS/Android/ Xamarin SDK v2.2.1 from the Downloads page. Source code customers can also get the latest from our Github repository as well as from Cocoapods for iOS, and Maven for Android. We also keep on delivering continuously for bug fixes, features and minor updates to the following package sources.

In addition, our example code is published to Github and is available to clone or download.

Download SciChart iOS/Android / Xamarin v 2.2.1

The post SciChart iOS /Android / Xamarin v2.2.1 released! appeared first on Fast, Native Chart Controls for WPF, iOS, Android and Xamarin.

Read more »

SciChart WPF v5.2.0 Released!
Posted by Julia Skorobogata on 18 October 2018 09:41 AM

We are pleased to announce the release of SciChart v5.2.0. Build 11680 . This is a new version which includes new features and big number of  bug fixes and improvements. It is strongly advised for users of SciChart v5.x to upgrade to this version, which is a drop-in replacement. 

What’s New in SciChart WPF v5.2.0?

Breaking changes 

There are some breaking changes, that will affect users of SciChart.DirectX, Custom Themes and AnnotationCreationModifierMVVM. Please read on. To the rest of the users this version is backward compatible.

  1. users of SciChart.DirectX will now need to update SharpDX to v4.2.0
  2. users who have custom themes will need to add the following three theme keys to their Theme Resource dictionary with color values of their choice:
    <!– 3DChart Specific values –>
    <Color x:Key=”PlaneBorderColor”>#FF333333</Color>
    <Color x:Key=”AxisPlaneBackgroundFill”>Transparent</Color>
    <Color x:Key=”Axis3DBandsFill”>#E1202123</Color>
  3. EffectManager.Instance.EnableDropShadows has been made obsolete, to solve a memory leak caused by WPF {x:Static} MarkupExtension binding. This property is now simply EffectManager.EnableDropShadows. Binding to this property may be achieved through the .NET 4.5 Static Property binding mechanism.
  4. AnnotationCreationModifierMVVM.AnnotationType is changed to – AnnotationCreationModifierMVVM.AnnotationViewModelType and AnnotationCreationModifierMVVM.AnnotationsColection to – AnnotationCreationModifierMVVM.AnnotationViewModelsCollection.


WPF New Chart Type: Free Surface Mesh 3D

The Free Surface 3D Chart types are a set of 3D Charts that represent the data by plotting the surface in a custom shape in 3D space. The Free Surface 3D Chart types allows to plot both types of charts that constrained to its basic 3D primitive and unconstrained. In other words it allows you to plot charts of all kinds of shapes, including Sphere, Cylinder, Disc and free-form mesh shapes.

Please this chart type examples below:

This chart type allows customization of a chart by overlaying heightmap, colormap (palette) and contours.

scichart wpf 3d chart example of ellipsoid 3d chart scichart wpf 3d chart example of closed mesh chart scichart wpf 3d chart example of disk or polar mesh 3d chart scichart wpf 3d chart example of cylindroid 3d mesh chart

  • The 3D FreeSurfaceRenderableSeries3Dcan be rendered in realtime as well. The Free Surface Mesh colors and palette can be udpated by supplying a MeshColorPalette.

Many mesh options are available such as Wireframe, SolidMesh, Solid with Wireframe, and many paletting options such as Solid Cells, Interpolated Cells and Textured.

Please see an example below and read documentation for  SciChart WPF Realtime 3D Geoid:

This new 3D Chart type is available to all customers of SciChart WPF SDK Professional, SDK Enterprise and 3D Professional who are in support subscription, free of charge.

WPF New Feature: Trade Annotations (Drawing tools)

With WPF v.5.2 SciChart features a rich DrawingTools API, includes new drawing tools that will allow you to easily place annotations that are widely used in financial or trading domains at your application .

Now you can add following out of the box

All the drawing tools are customarily, you may change stroke thickness, line style and colors, etc.

All new drawing tools are in the SciChart.DrawingTools.dll package and are available to all customers of SciChart WPF SDK Professional, SDK Enterprise and 2D Enterprise who are in support subscription, free of charge. 

Bug Fixes and Improvements
  • Fixed a memory leak in DirectX Renderer plugin when PointMarker changed often or new series with PointMarkers created often, cached textures for the marker were not released.
  • Updated SciChart licensing module to use FIPS compliant algorithms so that SciChart can be used in high security settings
  • Increased performance of series load by only applying Dropshadow effects to series markers and tooltips in the SciChart XAML Templates when the EffectManager.EnableDropShadows flag is set *and* the tooltip is visible
  • Fixed issue where creating MVVM AxisViewModel after SciChartSurface is loaded causes Axis.IsPrimaryAxis to be false and AxisAlignment incorrect, which resulted in blank chart
  • Added missing properties to MVVM Bindings for AxisBase3D: CursorTextFormatting, AxisTitle, VisibleRange
  • Added a property to AxisBase3D.AxisPlaneBackgroundFill which when set (default Transparent) fills in the entire axis wall in a solid colour
  • Fixed hit test and tooltip on RenderableSeries3D failing when obscured by a custom BaseSceneEntity
  • Fixed null reference if Direct3D11RenderSurface.RenderSurfaceLoaded is called after Dispose
  • Fixed a memory leak where chart was kept alive if LegendModifier was used.
  • Fixed issue with DataPointSelectionModifier, when XAxisId where set from ViewModel
  • Fixed SC-4601: DataPointSelectionModifier seems to select incorrect columns in StackedColumnsSeries
  • Fixed the issue with ZoomHistoryManager when MVVM API is used and AxisBinding is not working yet
  • Fixed SC-4543: ZoomHistoryManager does not fire RangeHistoryChanged when ClearAllHistory is called
  • Fixed the issue when ZoomHistoryManager would throw when MVVM API is used and AxisBinding had not worked yet
  • Fixed Assertion Failed. Martix stackoverflow
  • SC3D-472: Added true AntiAliasing for text objects in SciChart 3D which fixes white text edge problem
  • Fixed SC3D-473: flickering that happens when min and max values are very different by not resetting the min and max again when calculating each frame
  • Fixed SC-4633: when there is no height map texture, the waterfall was broken
  • Fixed SurfaceMeshRenderableSeries3D crashes for specific dataset
  • Ported Fix for Direct3D10RenderSurface memory leak from v4.x branch to v5.x. Required some modifications due to changes in v 5.x branch
  • Added some documentation for performance / memory leak debugging
  • Fixed an issue DoubleScaleDiscontinuousAxis would not invalidate when the DrawAxisScaleBands property changes
  • Fixed binding error in default Axis3D style (MVVM)
  • Fixed bug where last pane in SciChart Group with SciStockChart does not accept mousewheel
  • Fixed PinchZoomModifier issues
  • Fixed drawing of StackedMountains for VerticalChart
  • Fixed ExtremeResampler crash on Arabic Win10
  • Fixed IsSelected flag on PointMetadata3D not updating the chart
  • Fixed SC-4502: PointMetaData3D.Parent does not set on XyzDataSeries3D append and insert
  • Fixed cross thread violation crash when FastHeatmapRenderableSeries is instantiated in an STAThread
  • Fixed an issue when LogarithmicAxis would throw in TickProvider when used in an MVVM scenario
  • Fixed SC-4611: LogarithmicAxis and FastColumn didn’t worked correctly
  • Fixed SC-4564: AutoRange=”Always” broken for logarithmic stacked column series
  • Fixed FibonacciRetracementAnnotation when used with MVVM
  • Improved AxisBandsProvider API to be more convenient
  • Added internal TextBox property in TextAnnotation
  • Fixed 3D charts with DateTime Z axis issues
  • Added Labstylecharts 3D Chart example
  • Fixed SC-4612: CompositeAnnotations as long as Drawing Tools disappear after the export
  • Fixed SC-4465: SeriesInfo3D provides no access metadata – cannot show point metadata in tooltips
  • Fixed SC-4626: tweaked C# resamplers as well to correctly handle case when data unsorted and evenly spaced when using Auto mode
  • Fixed SC-4471: TooltipModifier doesn’t consider size of PointMarkers for ScatterSeries
  • Fixed VisibleRangeLimit when it should not clip range if VisibleRange min more then VisibleRangeLimit Max when LimitMode is min (and vice versa)
  • Added SciChartGroup.VerticalChartGroup property to SynchronizeMouseAcrossCharts.xaml
  • Fixed an issue when StackedColumns would throw when ZoomExtents called and series had not been attached yet

Where to Get SciChart WPF v5.2.0?

SciChart WPF v5.2.0 is available from:

Please ensure you uninstall the previous version(s) of SciChart before installing v5.2.0 as this can prevent some issues in the upgrade process!



Best regards,
SciChart team

The post SciChart WPF v5.2.0 Released! appeared first on Fast, Native Chart Controls for WPF, iOS, Android and Xamarin.

Read more »


Not sure where to start? Contact us, we are happy to help!


SciChart Ltd, 16 Beaufort Court, Admirals Way, Docklands, London, E14 9XL. Email: Legal Company Number: 07430048, VAT Number: 101957725