Полосы прокрутки холста Silverlight - PullRequest
0 голосов
/ 28 июля 2010

Я прочитал, что размещение холста внутри прокрутки не будет работать, потому что холст не сообщает о его размере.Я экспериментировал с различными контейнерами (границами, сетками, холстами и программами просмотра прокрутки) и мог бы сделать простое объяснение того, как ведут себя пользователи прокрутки во вложенных контейнерах.Например, если у меня есть контейнерная иерархия UserControl> Grid1> Canvas1> ScrollViewer> Grid2> Canvas2, должны ли полосы прокрутки появляться вокруг Grid2, когда Canvas2 становится шире, чем Canvas1?(или даже шире, чем UserControl). Если нет, то как мне организовать свои контейнеры, чтобы я мог добавлять множество элементов в Canvas2 и при необходимости отображать полосы прокрутки.(Ширина и высота моего пользовательского контроля установлены на 100%)

1 Ответ

1 голос
/ 28 июля 2010

Canvas будет работать с ScrollViewer, если вы явно дадите ему размер.Проблема заключается в том, что если вы не укажете Height и Width для какого-либо элемента управления, он попытается определить доступную область на основе родительского контейнера.A ScrollViewer, однако, имеет бесконечную доступную площадь.

Например, Grid.Если я определю Grid, у которого есть 2 столбца Ширина звезды и 2 строки Высота звезды.Откуда Grid знает, какой ширины должен быть каждый из этих столбцов?Звезда говорит, что они должны составлять половину доступной области, но внутри ScrollViewer доступная область равна бесконечности.

Какие элементы управления вы добавляете в Canvas2?Если вы добавляете их с фиксированными позициями, ScrollViewer развернется, чтобы разместить все элементы.Если вы не дадите им фиксированные позиции, то все элементы управления будут накладываться друг на друга, потому что это поведение аранжировки Canvas

...