У меня есть линейная диаграмма Visiblox, которая позволяет масштабировать и перемещать по оси X (но не по оси Y). После масштабирования или панорамирования определенной области диаграммы я хотел бы, чтобы диапазон YAxis и тики были пересчитаны только на основе видимых данных. Я попытался установить AutoScaleToVisibleData="True" для YAxis, но это не работает, поскольку масштабирование и панорамирование не устанавливают XAxis.Range, а XAxis.Range должен измениться, чтобы свойство AutoScaleToVisibleData YAxis имело эффект.
ИЗМЕНИТЬ
Сейчас я пытаюсь использовать функцию IAxis.AdoptZoomAsRange(), но не могу понять ее. Соответствующий пример кода ниже:
XAML:
<charts:Chart Name="chart">
<charts:Chart.Behaviour>
<charts:BehaviourManager AllowMultipleEnabled="True">
<charts:PanBehaviour IsEnabled="True" YPanEnabled="False" PanEnded="PanBehaviour_PanEnded" />
<charts:ZoomBehaviour IsEnabled="True" YZoomEnabled="False" AnimationEnabled="False" ZoomMode="MouseWheel" ZoomEnded="ZoomBehaviour_ZoomEnded" />
</charts:BehaviourManager>
</charts:Chart.Behaviour>
<charts:Chart.XAxis>
<charts:DateTimeAxis />
</charts:Chart.XAxis>
<charts:Chart.YAxis>
<charts:LinearAxis AutoScaleToVisibleData="True" />
</charts:Chart.YAxis>
</charts:Chart>
Код программной части:
public MainWindow()
{
InitializeComponent();
DataSeries<DateTime, double> dataSeries = new DataSeries<DateTime, double>();
for (int i = 0; i < 100; i++)
dataSeries.Add(new DataPoint<DateTime, double>(DateTime.Now.AddMonths(i), i));
LineSeries lineSeries = new LineSeries();
lineSeries.DataSeries = dataSeries;
chart.Series.Add(lineSeries);
}
private void PanBehaviour_PanEnded(object sender, EventArgs e)
{
chart.YAxis.AdoptZoomAsRange();
}
private void ZoomBehaviour_ZoomEnded(object sender, EventArgs e)
{
chart.YAxis.AdoptZoomAsRange();
}