2011-03-22 14 views
7

Jak mogłem zrobić treść który jest umieszczany wewnątrz WPF Viewbox z Stretch="UniformToFill"być przewijane?Przewijany zawartość wewnątrz WPF Viewbox z „UniformToFill”

Na przykład

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

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

Zawartość jest zmieniany w celu wypełnienia wymiary docelowego podczas zachowuje natywną proporcji. Jeśli współczynnik kształtu miejsca docelowego różni się od źródła, treść źródłowa jest przycinana w celu dopasowania do docelowych wymiarów.
Więc próbowałem użyć ScrollViewer, aby móc przewinąć do obszarów źródłowej zawartości, które zostały obcięte, ale paski przewijania są widoczne, ale wyłączone.

Próbowałem ClipToBounds="False", ale to nie pomogło.

+0

To dość niezwykłe, aby umieścić widok w przewijarce. jeden zmienia rozmiar zawartości, aby zmieścił się w określonej przestrzeni, a drugi pozwala użytkownikowi przewijać, aby zobaczyć zawartość, która jest zbyt duża dla tej przestrzeni. może powinieneś cofnąć się i opisać, co próbujesz osiągnąć? –

+1

@Robert Levy Zawartość Viewbox składa się z nieprzewidywalnej liczby innych elementów sterujących. Viewbox jest potrzebny do skalowania zawartości w górę iw dół oraz ScrollViewer do osiągnięcia tej zawartości po jej przeskalowaniu. – rem

Odpowiedz

15

The ViewBox zmienia rozmiar swojej zawartości w oparciu o wymiary, które zajmuje. ScrollViewer daje do renderowania zawartość o nieskończonej szerokości/wysokości. Tak więc, kiedy umieścisz ViewBox w ScrollViewer, ViewBox myśli, że ma "całą przestrzeń na świecie", aby rozciągnąć.

Ponadto ViewBox używa transformacji renderowania do rozciągnięcia zawartości, co oznacza, że ​​Twój ScrollViewer nigdy nie pozna ostatecznego rozmiaru zawartości.

Aby Twój ScrollViewer działał, musisz umieścić szerokość/wysokość na panelu ViewBox. Musi wiedzieć, ile zajmuje miejsca.

+1

Dziękuję, pomocna odpowiedź! +1 – rem

Powiązane problemy