На самом деле все работает нормально.Все прямоугольники имеют разную высоту.Но вы забыли переместить их, чтобы они начали перекрываться.Измените маленький код, и вы увидите:
lines[i] = new Rectangle()
{
Height = i * scale,
Width = 10,
StrokeThickness = 5,
Stroke = new SolidColorBrush(Colors.Red),
Name = i.ToString(),
};
lines[i].Margin = new Thickness(11 * i, 0, 0, 0);
Результат
