Hi telerik
It would appear to me, that the chart is not redrawn 'without series' if I call radChart.SeriesMappings.Clear() ?
It may not makes much sense to you what I'm trying, but my users can change the data used for series. Some selections may result in (handled) exceptions where no seriesMappings are added to the radChart.SeriesMappings - and in this case the previous choice of data is still shown to some confusion for my users?
Anything I can do to reset the chart in this case? Perhaps 'manually'?
(And, yes - I know that I'm in serious violation of the MVVM in snippet below ;-) ).
Thanks,
Anders, Denmark.
private void UpdateGraphWithViewModel(IGraphViewModel viewModel)
{
_loggingService.Log("Drawing graph");
var numberOfSeries = viewModel.NumberOfSeries;
// If this is not the first time we are called, the existing must be reset before adding below.
radChart.SeriesMappings.Clear();
foreach (var selectedVariableY in viewModel.SelectedVariablesY)
{
for (var i = 0; i < numberOfSeries; i++)
{
try
{
var pointMarkAppearanceSettings = new PointMarkAppearanceSettings {Shape = MarkerShape.Diamond};
var seriesAppearanceSettings = new SeriesAppearanceSettings
{
PointMark = pointMarkAppearanceSettings
};
var interactivitySettings = new InteractivitySettings
{
HoverScope = InteractivityScope.Series,
SelectionScope = InteractivityScope.Series
};
var splineSeriesDefinition = new SplineSeriesDefinition
{
Appearance = seriesAppearanceSettings,
InteractivitySettings = interactivitySettings
};
var seriesMapping = new SeriesMapping
{
LegendLabel = viewModel.GetLegendHeader(i),
SeriesDefinition = splineSeriesDefinition,
ItemsSource = viewModel.GetData(i, selectedVariableY.VariableName)
};
seriesMapping.ItemMappings.Add(new ItemMapping("X", DataPointMember.XValue));
seriesMapping.ItemMappings.Add(new ItemMapping("Y", DataPointMember.YValue));
radChart.SeriesMappings.Add(seriesMapping);
}
catch (Exception ex)
{
var message = string.Format("Error trying to produce serie {0}: {1}", i, ex.Message);
_loggingService.Log(message);
}
}
}
var zoomScrollSettingsX = new ZoomScrollSettings
{
MinZoomRange = 0.1,
RangeEnd = 1,
RangeStart = 0,
ScrollMode = ScrollMode.ScrollAndZoom
};
var zoomScrollSettingsY = new ZoomScrollSettings
{
MinZoomRange = 0.1,
RangeEnd = 1,
RangeStart = 0,
ScrollMode = ScrollMode.ScrollAndZoom
};
radChart.DefaultView.ChartArea.ZoomScrollSettingsX = zoomScrollSettingsX;
radChart.DefaultView.ChartArea.ZoomScrollSettingsY = zoomScrollSettingsY;
//radChart.DefaultView.ChartTitle.Content = viewModel.ChartTitle;
radChart.DefaultView.ChartArea.AxisX.Title = viewModel.AxisTitleX;
radChart.DefaultView.ChartArea.AxisY.Title = viewModel.AxisTitleY;
_loggingService.Log("Databinding done. " + string.Format("{0:d/M/yyyy HH:mm:ss:ffff}", DateTime.Now));
}
It would appear to me, that the chart is not redrawn 'without series' if I call radChart.SeriesMappings.Clear() ?
It may not makes much sense to you what I'm trying, but my users can change the data used for series. Some selections may result in (handled) exceptions where no seriesMappings are added to the radChart.SeriesMappings - and in this case the previous choice of data is still shown to some confusion for my users?
Anything I can do to reset the chart in this case? Perhaps 'manually'?
(And, yes - I know that I'm in serious violation of the MVVM in snippet below ;-) ).
Thanks,
Anders, Denmark.
private void UpdateGraphWithViewModel(IGraphViewModel viewModel)
{
_loggingService.Log("Drawing graph");
var numberOfSeries = viewModel.NumberOfSeries;
// If this is not the first time we are called, the existing must be reset before adding below.
radChart.SeriesMappings.Clear();
foreach (var selectedVariableY in viewModel.SelectedVariablesY)
{
for (var i = 0; i < numberOfSeries; i++)
{
try
{
var pointMarkAppearanceSettings = new PointMarkAppearanceSettings {Shape = MarkerShape.Diamond};
var seriesAppearanceSettings = new SeriesAppearanceSettings
{
PointMark = pointMarkAppearanceSettings
};
var interactivitySettings = new InteractivitySettings
{
HoverScope = InteractivityScope.Series,
SelectionScope = InteractivityScope.Series
};
var splineSeriesDefinition = new SplineSeriesDefinition
{
Appearance = seriesAppearanceSettings,
InteractivitySettings = interactivitySettings
};
var seriesMapping = new SeriesMapping
{
LegendLabel = viewModel.GetLegendHeader(i),
SeriesDefinition = splineSeriesDefinition,
ItemsSource = viewModel.GetData(i, selectedVariableY.VariableName)
};
seriesMapping.ItemMappings.Add(new ItemMapping("X", DataPointMember.XValue));
seriesMapping.ItemMappings.Add(new ItemMapping("Y", DataPointMember.YValue));
radChart.SeriesMappings.Add(seriesMapping);
}
catch (Exception ex)
{
var message = string.Format("Error trying to produce serie {0}: {1}", i, ex.Message);
_loggingService.Log(message);
}
}
}
var zoomScrollSettingsX = new ZoomScrollSettings
{
MinZoomRange = 0.1,
RangeEnd = 1,
RangeStart = 0,
ScrollMode = ScrollMode.ScrollAndZoom
};
var zoomScrollSettingsY = new ZoomScrollSettings
{
MinZoomRange = 0.1,
RangeEnd = 1,
RangeStart = 0,
ScrollMode = ScrollMode.ScrollAndZoom
};
radChart.DefaultView.ChartArea.ZoomScrollSettingsX = zoomScrollSettingsX;
radChart.DefaultView.ChartArea.ZoomScrollSettingsY = zoomScrollSettingsY;
//radChart.DefaultView.ChartTitle.Content = viewModel.ChartTitle;
radChart.DefaultView.ChartArea.AxisX.Title = viewModel.AxisTitleX;
radChart.DefaultView.ChartArea.AxisY.Title = viewModel.AxisTitleY;
_loggingService.Log("Databinding done. " + string.Format("{0:d/M/yyyy HH:mm:ss:ffff}", DateTime.Now));
}