强制轴在Visiblox图表中使用给定数量的主刻度线

时间:2011-07-21 18:48:10

标签: c# visiblox

在Visiblox图表中使用LinearAxis作为Y轴时,我想强制轴使用给定数量的主刻度线,同时仍然使工具包自动计算轴范围和刻度标记位置。例如,我可能有一个主要和次要Y轴,我希望两个轴使用相同数量的主要刻度,以便它们的水平网格线重叠。这可能吗?

2 个答案:

答案 0 :(得分:4)

有几种选择。首先,您可以设置MajorTickInterval以强制分配主要滴答。根据您的使用情况,您可能需要查看轴的实际范围,并除以您想要获得合理间隔的刻度数。

另一种方法是对轴进行子类化并覆盖GetMajorTickValues方法,该方法是轴用于确定刻度位置的位置。

答案 1 :(得分:4)

如果您需要强制主轴和辅助轴上的值之间的关系,可以通过ElementName绑定来实现。例如,您可以将辅助轴MajorTickInterval绑定到主轴ActualMajorTickInterval的计算的滴答间隔,如下所示:

<Grid x:Name="LayoutRoot" Background="White">
  <vis:Chart x:Name="chart">
    <vis:Chart.YAxis>
      <vis:LinearAxis x:Name="primaryAxis"/>
    </vis:Chart.YAxis>
    <vis:Chart.SecondaryYAxis>
      <vis:LinearAxis MajorTickInterval="{Binding ElementName=primaryAxis, Path=ActualMajorTickInterval}"/>
    </vis:Chart.SecondaryYAxis>
  </vis:Chart>
</Grid>

但是,根据您的数据,每个轴具有相同的滴答间隔可能不会导致您的主要滴答网格线重合。在这种情况下,您可能希望绑定范围:

<Grid x:Name="LayoutRoot" Background="White">
  <vis:Chart x:Name="chart">
    <vis:Chart.YAxis>
      <vis:LinearAxis x:Name="primaryAxis"/>
    </vis:Chart.YAxis>
    <vis:Chart.SecondaryYAxis>
      <vis:LinearAxis Range="{Binding ElementName=primaryAxis, Path=ActualRange}"
                      MajorTickInterval="{Binding ElementName=primaryAxis, Path=ActualMajorTickInterval}"/>
    </vis:Chart.SecondaryYAxis>
  </vis:Chart>
</Grid>

如果您需要更复杂的逻辑,可以通过值转换器来实现。