SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, iOS Chart, Android Chart and JavaScript Chart Components
I’m trying to implement custom annotations using the MVVM pattern. I’ve been using your tutorial as an example (https://www.scichart.com/databinding-annotations-with-mvvm/). Everything works as expected if I manually load some example data to the annotations collection. When I actually try to load the data from our database using async method, the annotations are no longer drawn.
Is this by design or am I doing something wrong? Do you have any suggestions how to load annotations when using async code and MVVM patterns? I haven’t had any problems loading the actual time series on the chart using the same pattern.
I also tried binding the SciChartSurface’s Annotations property to AnnotationCollection and then calling ChartAnnotations.ParentSurface.InvalidateElement(), but the issue still persists.
You can easily reproduce this behavior by adding an async call to the examples’s source code:
private async Task Initialize()
{
var ds0 = new XyDataSeries<double, double>();
var someData = new RandomWalkGenerator().GetRandomWalkSeries(200); // RandomWalkGenerator is found in the examples source code
ds0.Append(someData.XData, someData.YData);
_chartSeries = new ObservableCollection<IChartSeriesViewModel>();
_chartSeries.Add(new ChartSeriesViewModel(ds0, new FastLineRenderableSeries()));
// Now create the labels
_chartLabels = new List<LabelViewModel>
{
new LabelViewModel(5, -2.5, "Label0", "Label0 Tooltip!"),
new LabelViewModel(20, -2, "Label1", "Label1 Tooltip!"),
new LabelViewModel(35, 3, "Label2", "Label2 Tooltip!"),
new LabelViewModel(50, 1.5, "Label3", "Label3 Tooltip!"),
};
await Test();
_chartLabels.Add(new LabelViewModel(65, -0.5, "AFTER ASYNC", "Label4 Tooltip!"));
}
private async Task Test()
{
await Task.Delay(5000);
}