2009-11-02 14 views
6

OK, to zabrzmi głupio, ale nie mogę uruchomić ScrollViewer, aby działał poprawnie. Co muszę zrobić, toWysokość przewijania zostanie automatycznie przewinięta, gdy zawartość przepełni stronę

  1. mieć przeznaczenie strona Silverlight 100% szerokość/wysokość strony HTML

  2. mają height = 160px kontrolę na górnej części strony Sliverlight, wtedy reszta (100% - 160px) to ScrollViewer z dynamicznie zmieniającą się zawartością.

więc na stronie HTML mam:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 

następnie w XAML:

<Grid x:Name="LayoutRoot" Height="Auto"> 
     <StackPanel Orientation="Vertical" Height="Auto">   
      <App:ASilverlightControl x:Name="Header" Height="160"/> 
      <ScrollViewer Name="svw" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Visible" Height="Auto" > 
       <StackPanel Orientation="Vertical" x:Name="DynamicContentHere"> 
       </StackPanel>             
      </ScrollViewer> 
     </StackPanel>  
    </Grid> 

Teraz, bez względu na to, co staram, ScrollViewer będą sprecyzowane rozwinąć/zamówienia zawierają wszystkie elementy w StackPanel, nawet jeśli oznacza to przepełnienie pod ekranem, ale bez pionowego paska przewijania.

Jedyny sposób, w jaki mogę to zrobić, to ustawić Wysokość = 800 na ScrollViewer.

Odpowiedz

18

Umieszczenie ScrollViewer wewnątrz StackPanel nigdy nie zadziała. StackPanel zawsze zezwala na całą przestrzeń wymaganą przez zawartość ScrollViewer.

Należy użyć siatki z dwoma rzędami Zamiast:

<Grid x:Name="LayoutRoot" Height="Auto"> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="160"/> 
    <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <App:ASilverlightControl x:Name="Header" Grid.Row="0"/> 
    <ScrollViewer Name="svw" Grid.Row="1" 
    HorizontalScrollBarVisibility="Disabled" 
    VerticalScrollBarVisibility="Visible"> 
    <StackPanel Orientation="Vertical" x:Name="DynamicContentHere"> 
     ... 
    </StackPanel>             
    </ScrollViewer> 
</Grid> 

Gwiazdka * w drugim RowDefinition automatycznie wprowadzi ScrollViewer wypełnić jak najwięcej, ale nadal utrzymać ją wewnątrz obszaru wizualnego, a tym samym dokonać ScrollViewer praca.

Powiązane problemy