Мне удалось решить проблему, которая возникла, когда я динамически добавлял периоды времени к временной шкале.
Элементы управления, которые я динамически добавляю на холст, имеют следующую структуру.
<Path x:Name="ribbonItem" Fill="Green">
<Path.Data>
<GeometryGroup>
<RectangleGeometry x:Name="ribbonItemBackground" />
</GeometryGroup>
</Path.Data>
</Path>
Размеры RectangleGeometry зависят от трех входных данных, диапазонов даты и времени на панели временной шкалы и элементе временной шкалы (что я добавляю) и размеров панели (холста).
Следующий метод вызывается, когда установлены какие-либо свойства объекта BarRange, ItemRange или BarSize.
private void Resize()
{
if (_itemRange != null && _barRange != null && _barSize != Size.Empty)
{
ribbonItemBackground.Rect = ItemRectangle();
}
}
Это вызвало проблему рисования, упомянутую в моем вопросе, и решением было добавить
ribbonItem.InvalidateMeasure();
сразу после установки лентыItemBackground.Rect.