Я выбрал другой подход и отказался от Canvas for Grid. Canvas более производительный, но, по крайней мере, для моих целей я не заметил разницы. Сетка может имитировать поведение canvas, выполняя следующие действия.
Создание сетки из одной строки и одного столбца.
Установите горизонтальное выравнивание влево
Установите VerticalAlignment на Верх
Используйте маржу "x, y, 0,0", чтобы установить позицию.
Bam..работает как холст и отлично работает в Scrollviewer.