2010-02-25 21 views
6

To powinno być bardzo proste zadanie, ale z jakiegoś powodu mam z nim wiele problemów w WPF.Pasek przewijania WPF dla okna skalowalnego

Oto, co chcę zrobić: Mam kilka elementów sterujących w oknie, w tym elementy sterujące ekspandera. Chcę mieć paski przewijania dla tego okna, gdy zawartość rozwija się poniżej widocznego obszaru. Ponadto okno nie ma stałej szerokości, może być zmaksymalizowane, zmienione na rozmiar itp.

Próbowałem umieścić ScrollViewer jako pierwszy element w oknie, ale nie działa poprawnie. Jeśli ustawię wysokość i szerokość na Auto, to nie przewinie się i jeśli ustawię je w trybie zatrzymań, tworzy okno, gdy okno jest zmaksymalizowane.

Każda pomoc będzie bardzo ceniona!

+1

Proszę wyjaśnić, co oznacza "tworzy skrzynkę"? Nie całkiem to rozumiałem. – Vlad

+0

Oznacza to, że w środku znajduje się obszar o stałej szerokości, gdy okno wokół niego rozszerza się. –

+0

W takim przypadku, czy mógłbyś opublikować swój XAML? Interesujące jest samo okno i jego bezpośredni element potomny (ScrollViewer?). – Vlad

Odpowiedz

10

Zakładam, że masz problemy ze stałą szerokością. Jeśli podasz próbkę swojego XAML, mogę zobaczyć, czy mogę pomóc dalej. Następujące prace bez wyświetlania okna:

<Window x:Class="WpfSample1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <ScrollViewer> 
     <StackPanel> 
      <Rectangle Height="400" Width="400" Fill="Red" Margin="10" /> 
      <Rectangle Height="400" Width="400" Fill="Green" Margin="10" /> 
      <Rectangle Height="400" Width="400" Fill="Blue" Margin="10" /> 
      <Rectangle Height="400" Width="400" Fill="Yellow" Margin="10" /> 
     </StackPanel> 
    </ScrollViewer> 
</Window> 
+0

Okazało się, że naprawiono problemy z szerokością z cotnrolami, dzięki! –

8

Należy ustawić HorizontalScrollBarVisibility i VerticalScrollBarVisibility z ScrollViewer Auto.

Oto przykład:

<Grid> 
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
     <Canvas Width="400" Height="400"> 
      <Button Canvas.Left="300">Left 300</Button> 
      <Button Canvas.Top="300">Top 300</Button> 
     </Canvas> 
    </ScrollViewer> 
</Grid> 

Zastępuje zawartość głównego okna generowanego przez VS.

Uruchom i zmień rozmiar okna, zmaksymalizuj go, a przewiń paski pojawiające się i znikające.

Powiązane problemy