Единственное объяснение описываемого вами эффекта состоит в том, что вы установили Maximum&Minimum
значения для оси X.
MSDN:
Series.IsXValueIndexed
Получает или задает флаг, который указывает, будут ли индексы точек данных использоваться для значений X
Вы правильно поняли другие правила (например, о выравнивании рядов), ноэто простое утверждение подразумевает, что фактические значения x теперь игнорируются ;они все еще могут использоваться для форматирования меток, а также для расчета содержимого (см. ниже!), но когда дело доходит до размещения точек данных вдоль оси, они все заменяются индексами 0,1,2..
.вы установили для XAxis.Minimum&Maximum
больше не будет работать должным образом: DateTimes
в ваших точках внутренне огромных удваивается;индекс никак не может быть там достигнут, если только ваши даты не указаны с начала DateTime
(1 января, 0001) времени.
Вы можете проверить, сбросив значения Minimum/Maximum
:
Axis ax = someChartArea.AxisX;
ax.Minimum = double.NaN;
ax.Maximum = double.NaN;
Но если вы установили их, они, вероятно, понадобятся.Таким образом, вам может потребоваться рассчитать индексы для использования вместо;Вот пример:
Series s = yourSeries;
var p1 = s.Points.Where(x => x.XValue > ax.Minimum).First();
var p2 = s.Points.Where(x => x.XValue <= ax.Maximum).Last();
ax.Minimum = s.Points.IndexOf(p1);
ax.Maximum = s.Points.IndexOf(p2) + 1;
Но, возможно, более простая схема пойдет хорошо или лучше, когда дело доходит до, например, пейджинга.
Давайте посмотрим:
