2011-07-27 49 views
2

我有一个Visiblox折线图,允许在XAxis(而不是YAxis)上缩放和平移。在缩放或平移到图表的特定区域后,我希望仅基于可见数据重新计算YAxis范围和刻度。我尝试在YAxis上设置AutoScaleToVisibleData =“True”,但这不起作用,因为缩放和平移不会设置XAxis.Range,并且XAxis.Range必须更改以使YAxis的AutoScaleToVisibleData属性有效。平移或放大Visiblox图表后的自动缩放轴

编辑

我现在尝试使用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(); 
} 

回答

0

上IAxis而该AdoptZoomAsRange方法也可能是你在找什么 - 有它使用一个可下载的例子在这blog post这应该希望更清楚。

[披露:我在Visiblox上工作]

+0

这看起来像我无法弄清楚如何让它工作。我编辑了我原来的帖子来展示一个例子。我尝试在任何缩放或平移后在YAxis上将AutoScaleToVisibleData设置为True,但在平移或缩放后没有任何事情发生在YAxis上。 – Abiel

+0

您需要在XAxis上的AdoptZoomAsRange不是YAxis。 YAxis上的AutoScaleToVisibleData意味着它会根据XAxis范围内可见的内容计算出它的范围,因此您需要每次都重置该范围。 [免责声明:我为Visiblox工作] – wjbeau

+0

将AdoptZoomAsRange应用于XAxis而非工作;但是,现在图表不会使用鼠标滚轮缩小。在PanBehavior_PanEnded和ZoomBehavior_ZoomEnded中均调用AdoptZoomAsRange。如果我在ZoomBehavior_ZoomEnded中删除它,那么我可以缩小,但只有部分如果图表已经放大很多。 – Abiel