ScrollViewer прокручивает назад на WP7

Я создал страницу, на которой есть много информации от пользователя. Таким образом, пользователь должен иметь возможность прокрутить вниз, чтобы нажать кнопку «Загрузить». Чтобы прокрутить страницу вниз, я использовал ScrollViewer вне сетки. Я могу прокручивать, но страница продолжает прокручиваться после прокрутки вниз.

Вот мой код:

  <!--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>

В чем может быть причина этой проблемы и как ее решить?


person user473104    schedule 13.04.2012    source источник


Ответы (2)


Используйте StackPanels, чтобы поместить элементы один под другим. Удалите все ваши margins, height, width и другие элементы абсолютного позиционирования.

<Grid x:Name="ContentPanelButtom" Grid.Row="1" >
    <ScrollViewer>
        <StackPanel>
            <!-- elements here -->
        </StackPanel>
    </ScrollViewer>
</Grid>
person Ku6opr    schedule 13.04.2012

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

  • Сначала создайте ScrollViewer
  • Внутри ScrollViewer создайте контейнер (например, Grid/StackPanel/Border и т. д.) и поместите в него все элементы управления.
  • Установите фиксированную высоту для ScrollViewer и контейнера (Примечание: высота контейнера должна быть больше, чем высота ScrollViewer)

См. приведенный ниже код

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

Теперь вы можете прокручивать контейнер Grid Даже отображаемую клавиатуру или даже фокусироваться на текстовом поле.

person Rashad Valliyengal    schedule 20.12.2013