Заставить ось использовать заданное количество основных отметок на графике Visiblox

При использовании LinearAxis для оси Y на диаграмме Visiblox, я хотел бы заставить ось использовать заданное количество основных отметок, сохраняя при этом инструментарий для автоматического вычисления диапазона оси и местоположений отметок. Например, у меня может быть первичная и вторичная оси Y, и я хочу, чтобы обе оси использовали одинаковое количество главных тиков, чтобы их горизонтальные линии сетки перекрывались. Это возможно?

2 ответа

Если вам необходимо установить связь между значениями на первичной и вторичной осях, это можно сделать с помощью 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>

Однако, в зависимости от ваших данных, наличие одинакового интервала тиков для каждой оси может не привести к совпадению линий сетки основных тиков. В этом случае вы можете захотеть связать диапазон alse:

<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>

Если вам нужна более сложная логика, это можно сделать с помощью преобразователей значений.

Есть несколько вариантов. Во-первых, вы можете установить MajorTickInterval для принудительного распределения основных тиков. В зависимости от вашего варианта использования вам может потребоваться посмотреть фактический диапазон оси и поделить на количество тиков, которые вы хотите получить разумный интервал.

Другой альтернативой является создание подкласса оси и переопределение метода GetMajorTickValues, который используется осью для определения места размещения отметок.

Другие вопросы по тегам