Заставить ось использовать заданное количество основных отметок на графике Visiblox - PullRequest
5 голосов
/ 21 июля 2011

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

Ответы [ 2 ]

4 голосов
/ 22 июля 2011

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

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

4 голосов
/ 22 июля 2011

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

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

...