How to reproduce:
public partial class Form1 : Form
{
private RangeSelectorViewElement chartElement;
public Form1()
{
InitializeComponent();
new RadControlSpyForm().Show();
this.SetupChart();
this.radRangeSelector1.AssociatedControl = this.radChartView1;
this.chartElement = this.radRangeSelector1.RangeSelectorElement.AssociatedElement as RangeSelectorViewElement;
this.chartElement.SeriesInitializing += new SeriesInitializingEventHandler(chartElement_SeriesInitializing);
}
private void chartElement_SeriesInitializing(object sender, SeriesInitializingEventArgs e)
{
e.SeriesType = typeof(LineSeries);
}
private void SetupChart()
{
LineSeries lineSeries = new LineSeries();
lineSeries.DataPoints.Add(new CategoricalDataPoint(20, "Jan"));
lineSeries.DataPoints.Add(new CategoricalDataPoint(22, "Apr"));
lineSeries.DataPoints.Add(new CategoricalDataPoint(12, "Jul"));
lineSeries.DataPoints.Add(new CategoricalDataPoint(19, "Oct"));
this.radChartView1.Series.Add(lineSeries);
LineSeries lineSeries2 = new LineSeries();
lineSeries2.DataPoints.Add(new CategoricalDataPoint(3, "Jan"));
lineSeries2.DataPoints.Add(new CategoricalDataPoint(1, "Apr"));
lineSeries2.DataPoints.Add(new CategoricalDataPoint(5, "Jul"));
lineSeries2.DataPoints.Add(new CategoricalDataPoint(2, "Oct"));
this.radChartView1.Series.Add(lineSeries2);
}
private void radButton1_Click(object sender, EventArgs e)
{
this.radRangeSelector1.Height = 100;
//this.ScaleVerticallyChart(this.chartElement.View, .55);
}
}
Workaround: zoom out along the Y axis the hosted chart element and pan the view so that all series are visible
private void radButton1_Click(object sender, EventArgs e)
{
this.radRangeSelector1.Height = 100;
this.ScaleVerticallyChart(this.chartElement.View, this.radRangeSelector1.Height / (float)150);
}
private void ScaleVerticallyChart(ChartView view, double verticalScaleFactor)
{
FieldInfo fiPan = view.GetType().GetField("pan", BindingFlags.NonPublic | BindingFlags.Instance);
RadPoint pan = (RadPoint)fiPan.GetValue(view);
FieldInfo fiZoom = view.GetType().GetField("zoom", BindingFlags.NonPublic | BindingFlags.Instance);
RadSize zoom = (RadSize)fiZoom.GetValue(view);
double verticalPan = pan.Y * verticalScaleFactor / zoom.Height;
CartesianArea area = view.GetArea<CartesianArea>();
if (area != null)
{
MethodInfo mi = area.GetType().GetMethod("GetCartesianClipRect", BindingFlags.NonPublic | BindingFlags.Instance);
RectangleF rect = (RectangleF)mi.Invoke(area, new object[] { });
SizeF areaSize = rect.Size;
verticalPan += areaSize.Height - (areaSize.Height * verticalScaleFactor + verticalPan);
}
zoom = new RadSize(1, verticalScaleFactor);
fiZoom.SetValue(view, zoom);
view.Layout();
}