在 Visiblox 图表中为 Y 轴使用 LinearAxis 时,我想强制轴使用给定数量的主要刻度线,同时仍然让工具包自动计算轴范围和刻度线位置。例如,我可能有一个主要和次要 Y 轴,我希望两个轴使用相同数量的主要刻度,以便它们的水平网格线重叠。这可能吗?
问问题
1845 次
2 回答
4
有几个选项。首先,您可以设置MajorTickInterval以强制分配主要刻度。根据您的用例,您可能需要查看轴的实际范围,然后除以您想要获得合理间隔的刻度数。
另一种选择是对轴进行子类化并覆盖 GetMajorTickValues 方法,该方法是轴用于确定在何处放置刻度的方法。
于 2011-07-22T07:22:21.667 回答
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>
如果您需要更复杂的逻辑,则可以通过值转换器执行此操作。
于 2011-07-22T07:56:58.743 回答