WPF Toolkit Chart: Позиции визуализации точки данных смещены при изменении значений данных

Я использую диаграмму 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), линии по-прежнему рисуются правильно, но круги больше не отрисовываются по центру, но с верхним левым углом их холста, лежащим на местоположение фактической точки данных. Когда я изменяю размер графика, положение кругов снова становится правильным.

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

После первой загрузки данных:После первой загрузки данных

После того, как данные изменились на другие значения:После того, как данные изменились на другие значения

После изменения размера диаграммы:После изменения размера диаграммы

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

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

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

0 ответов

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