Silverlight масштабирование преобразования настроить полосы прокрутки - PullRequest
2 голосов
/ 28 июля 2010

У меня есть следующая иерархия элементов пользовательского интерфейса: UserControl> ScrollViewer> Canvas.Я рисую много материала на холсте, и он становится больше, чем UserControl, после чего ScrollViewer отображает полосы прокрутки.Все идет нормально.Теперь я применяю ScaleTransform к Canvas (скажем, 2.0, делая все в два раза больше).Тем не менее, мои полосы прокрутки не корректируются, поэтому теперь я могу прокручивать только половину моего увеличенного холста.Как настроить полосы прокрутки ScrollViewer для применения при применении масштабного преобразования к холсту, отображаемому в ScrollViewer?

Ответы [ 2 ]

3 голосов
/ 28 июля 2010

Ваша проблема в том, что ScaleTransform это RenderTransform, а не LayoutTransform. Размер, который он сообщает ScrollViewer, одинаков, независимо от масштаба.

Одним из решений, которое я использовал в прошлом, чтобы обойти это, является вложение Canvas в другой Canvas. Затем в коде можно изменить размер внешнего холста, чтобы отразить фактические размеры внутреннего холста. ScrollViewer будет обновлен для отображения правильных размеров. Вы на самом деле не меняете размер внутреннего холста, вы просто меняете масштаб.

2 голосов
/ 31 июля 2010
...