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