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