2012-04-13 10 views
2

Ich habe eine Seite erstellt, auf der der Benutzer viel eingeben kann. Der Benutzer sollte also in der Lage sein, nach unten zu scrollen, um eine Upload-Schaltfläche drücken zu können. Um auf der Seite nach unten zu scrollen, habe ich einen ScrollViewer außerhalb eines Rasters verwendet. Ich kann scrollen, aber die Seite scrollt nach dem Scrollen weiter zurück.ScrollViewer scrollt zurück auf WP7

Hier ist mein Code:

<!--ContentPanel - place additional content here--> 
     <Grid x:Name="ContentPanelButtom" Grid.Row="1" > 
      <ScrollViewer > 
       <Grid x:Name="ContentPanel" Background="black"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="154" /> 
         <ColumnDefinition Width="326" /> 
        </Grid.ColumnDefinitions> 
        <Image Height="109" HorizontalAlignment="Left" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="167" Margin="23,19,0,0" Source="{Binding Path=ImageSoruce, Mode=TwoWay}" Grid.ColumnSpan="2" /> 
        <TextBox Height="71" HorizontalAlignment="Left" Margin="12,161,0,0" Name="nameInput" Text="{Binding Path=Name, Mode=TwoWay}" VerticalAlignment="Top" Width="430" Grid.ColumnSpan="2" /> 
        <TextBlock Height="56" HorizontalAlignment="Left" Margin="23,134,0,0" Name="nameLabel" Text="Name" VerticalAlignment="Top" Width="130" FontSize="25" /> 
        <TextBlock FontSize="25" Height="60" HorizontalAlignment="Left" Margin="23,238,0,0" Name="descriptionLabel" Text="Description" VerticalAlignment="Top" Width="130" /> 
        <TextBox Height="72" HorizontalAlignment="Left" Margin="12,265,0,0" Name="descriptionInput" Text="{Binding Path=Description, Mode=TwoWay}" VerticalAlignment="Top" Width="430" IsEnabled="True" Grid.ColumnSpan="2" /> 
        <TextBlock FontSize="25" Height="60" HorizontalAlignment="Left" Margin="23,343,0,0" Name="locationLabel" Text="Location" VerticalAlignment="Top" Width="130" /> 
        <TextBlock Height="46" HorizontalAlignment="Left" Margin="24,384,0,0" Name="locationInput" Text="{Binding Path=Location, Mode=TwoWay}" VerticalAlignment="Top" Width="401" Loaded="locationInput_Loaded" Grid.ColumnSpan="2" /> 
        <toolkit:ListPicker SelectionMode="Multiple" FullModeHeader="CATEFORIES" x:Name="ListPickerCategories" CacheMode="BitmapCache" HorizontalAlignment="Left" Margin="25,492,0,0" VerticalAlignment="Top" Width="401" Grid.ColumnSpan="2" ItemsSource="{Binding Categories}" Height="78"></toolkit:ListPicker> 
        <TextBlock FontSize="25" Height="60" HorizontalAlignment="Left" Margin="24,436,0,0" Name="textBlock1" Text="Categories" VerticalAlignment="Top" Width="130" /> 
        <Button Content="Upload" Height="86" HorizontalAlignment="Left" Margin="26,604,0,0" Name="UploadButton" VerticalAlignment="Top" Width="411" Click="UploadButton_Click" Grid.ColumnSpan="2" /> 
       </Grid> 
      </ScrollViewer> 
      </Grid> 

Was die Ursache für dieses Problem sein kann und wie kann ich es lösen?

Antwort

6

Verwenden Sie StackPanels, um Elemente untereinander zu platzieren. Entfernen Sie alle Ihre margins, height, width und andere absolute Positionierung Sachen

<Grid x:Name="ContentPanelButtom" Grid.Row="1" > 
    <ScrollViewer> 
     <StackPanel> 
      <!-- elements here --> 
     </StackPanel> 
    </ScrollViewer> 
</Grid> 
0

Ich hatte das gleiche Problem. aber letztens habe ich es gelöst, ich habe einfach die Height-Eigenschaft dafür verwendet. Bitte beachten Sie die folgenden Schritte

  • Zuerst ein Indide die Scroll einen Container, Scroll
  • erstellen (zB: Grid/Stackpanel/Border etc ...) und setzen alle controlls in seinem Inneren.
  • Set feste Höhe für Scroll und der Container (Hinweis: Höhe des Behälters sollte als Scroll die Höhe größer sein)

Siehe unten-Code

<ScrollViewer Height="500"> 
     <Grid Name="Container" Height="700"> 
      <TextBox/> 
      <TextBox/> 
      <TextBox/> 
     </Grid> 
</ScrollViewer> 

Jetzt können Sie auch den Behälter Grid bewegen die KeyBoard gezeigt oder sogar Fokus auf eine TextBox.