Прокручиваемый контент внутри WPF Viewbox с помощью «UniformToFill» - PullRequest
7 голосов
/ 22 марта 2011

Как я могу сделать содержимое , которое помещается внутри WPF Viewbox с Stretch="UniformToFill" , прокручиваемым ?

Например:

<Grid Height="500" Width="1000" >
  <ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible" >
      <Viewbox Stretch="UniformToFill">
       ......

      </Viewbox>
   </ScrollViewer>
</Grid>

Размер содержимого изменяется, чтобы заполнить размеры назначения, при этом он сохраняет свое родное соотношение сторон. Если форматное соотношение места назначения отличается от исходного, исходное содержимое обрезается , чтобы соответствовать размерам назначения.
Поэтому я попытался использовать ScrollViewer, чтобы иметь возможность прокручивать области исходного содержимого, которые были обрезаны, но полосы прокрутки видны, но отключены.

Я пытался ClipToBounds="False", но это не помогло.

1 Ответ

15 голосов
/ 22 марта 2011

ViewBox изменяет свой контент в зависимости от размеров, которые он занимает. ScrollViewer предоставляет своему контенту бесконечную ширину / высоту для рендеринга. Поэтому, когда вы помещаете ViewBox в ScrollViewer, ViewBox считает, что у него есть «все пространство в мире» для растяжения.

Кроме того, ViewBox использует преобразования рендера для растягивания содержимого, а это означает, что ваш ScrollViewer никогда не узнает окончательный размер содержимого.

Чтобы ваш ScrollViewer работал, вы должны указать ширину / высоту в ViewBox. Нужно знать, сколько места он занимает.

...