WPF Toolkit (выпуск за февраль 2010 г.) Диаграмма с пустой серией столбцов, когда ItemsSource содержит только один элемент - PullRequest
0 голосов
/ 21 января 2011

У меня раздражающая проблема: у меня есть простая диаграмма с одним ColumnSeries и двумя осями (LinearAxis для зависимого значения и DateTimeAxis для независимого).Элемент ItemsSource моего ColumnSeries связан с коллекцией экземпляров DataPoint (простой класс, имеющий только 3 свойства: Date, IndependentValue и DependentValue).Диаграмма правильно отображает столбцы, если в коллекции есть 2 или более элементов;, но если в нем есть только один , он не покажет любой столбец .

Есть идеи о том, что происходит?

Вот XAML (для краткости и пространства имен как стандартного, так и WPF Toolkit опущены):

<Window x:Class="Demo.MainWindow" (...) xmlns:local="clr-namespace:Demo">
  <Grid>
    <Grid.Resources>
      <local:DataPointCollection x:Key="DataPointCollection" />
    </Grid.Resources>
    <ct:Chart Title="Demo">
      <ct:ColumnSeries Title="A"
                       ItemsSource="{StaticResource DataPointCollection}"
                       IndependentValueBinding="{Binding Date}"
                       DependentValueBinding="{Binding DependentValue}" />
      <ct:Chart.Axes>
        <ct:LinearAxis Orientation="Y"
                       ShowGridLines="True"
                       Title="Dependent Title" />
        <ct:DateTimeAxis Orientation=X"
                         ShowGridLines="True"
                         Interval="1"
                         IntervalType="Days" />
      </ct:Chart.Axes>
    </ct:Chart>
  </Grid>
</Window>

Класс DataPointCollection:

using System;

namespace Demo
{
  using System.Collections.ObjectModel;

  public class DataPointCollection: Collection<DataPoint>
  {
    public DataPointCollection()
    {
      Add(new DataPoint { Date = DateTime.Now.Date, DependentValue = 5 });
      // Comment next line to see an empty chart:
      Add(new DataPoint { Date = DateTime.Now.Date.AddDays(1), DependentValue = 6 });
    }
  }
}

И класс DataPoint:

using System;

namespace Demo
{
  public class DataPoint
  {
    public DateTime Date { get; set; }
    public double DependentValue { get; set; }
  }
}

Проект представляет собой обычное приложение WPF (WPF 4).

Заранее спасибо.

1 Ответ

0 голосов
/ 22 января 2011

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

        var now = DateTime.Now;
        Add(new DataPoint { Date = now, DependentValue = 5 });
        Add(new DataPoint { Date = now + TimeSpan.FromDays(1), DependentValue = 0 });
        Add(new DataPoint { Date = now - TimeSpan.FromDays(1), DependentValue = 0 });
...