WPF Toolkit Chart: Позиции визуализации точки данных смещены при изменении значений данных - PullRequest
8 голосов
/ 29 марта 2012

Я использую таблицу WPF Toolkit для отображения нескольких рядов линий с точками данных.Я создал стили для LineDataPoints, которые используют холст, на котором нарисованы символы (например, круг).

Вот одно из определений стиля:

<Style x:Key="CircleDataPointStyleRed"
       TargetType="chartingToolkit:LineDataPoint">
    <Setter Property="Background"
            Value="Red" />
    <Setter Property="IsTabStop"
            Value="False" />
    <Setter Property="Width"
            Value="10" />
    <Setter Property="Height"
            Value="10" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="chartingToolkit:LineDataPoint">
                <Canvas>
                    <Ellipse Height="10"
                             Width="10"
                             Stroke="Red" />
                </Canvas>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Когда я загружаю данные вПри просмотре модели диаграмма отображается правильно, линии видны, а точки данных нарисованы по центру в правильном положении, поэтому центральная точка окружности лежит там, где находится фактическая точка данных.Теперь, когда я загружаю другой набор данных в диаграмму (изменяю ObservableCollections, к которым привязан LineSeries), линии по-прежнему рисуются правильно, но круги больше не отрисовываются по центру, но с верхним левым углом их холста, лежащим наместоположение фактической точки данных.Когда я изменяю размер графика, положение кругов снова становится правильным.

Вот несколько снимков экрана, чтобы уточнить:

После загрузки первых данных: After first data is loaded

Последанные изменились на разные значения: After data has changed to different values

После изменения размера диаграммы: After the chart has been resized

То, что я пробовал до сих пор (каждый безрезультатно):

  • Установка HorizontalAlignment и VerticalAlignment на полотнах в шаблонах
  • Попытка вызова UpdateLayout (), а также всех методов InvalidateXxx для элемента управления

Как мне добитьсяточки данных, которые должны быть нарисованы в правильных положениях даже после изменения данных?

...