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);
}
- Juho asked 7 years ago
- last active 7 years ago