ScrollViewer - прокрутка не работает с изображениями внутри ScrollViewer - PullRequest
2 голосов
/ 23 октября 2011

У меня есть ScrollViewer, внутри которого есть некоторый контент. Проблема в том, что прокрутка не работает должным образом. Когда вы прокручиваете содержимое пальцем, а затем отпускаете, прокручиваемая область всегда возвращается к началу. Он просто подпрыгивает, как упругий, и не останется внизу, где вы его прокручивали.

<Grid Name="DetailPane" Margin="0,0,0,65" VerticalAlignment="Bottom" Visibility="Collapsed" Background="White" Opacity="0.85">
    <StackPanel>
        <Grid VerticalAlignment="Top">
            <Button Margin="0" Padding="0" Click="CloseDetailPanel" HorizontalAlignment="Right" >
                <Button.Content>
                    <Image Source="images\appbar.close.rest.small.png" Width="20" Height="20"></Image>
                </Button.Content>
            </Button>
        </Grid>
        <ScrollViewer x:Name="contentScrollViewer" VerticalAlignment="Top">
            <Grid>
                <StackPanel>
                    <TextBlock Padding="10,0,10,0" HorizontalAlignment="Left" Name="titleTextBlock" TextWrapping="Wrap" Foreground="#FF2B2929" FontWeight="Bold" />
                    <Image x:Name="contentThumbnail" Source="bild.jpg" Visibility="Visible" Width="400" Height="300" Margin="10" />
                    <TextBlock Padding="10" HorizontalAlignment="Left" Name="statusTextBlock" TextWrapping="Wrap" Foreground="#FF2B2929" />
                    <HyperlinkButton Padding="0,5,0,10" x:Name="WikipeadiaLink" HorizontalAlignment="Left" VerticalAlignment="Bottom" Content="More on Wikipedia" TargetName="_blank"  NavigateUri="" Foreground="Blue" FontSize="18" />
                </StackPanel>
            </Grid>
        </ScrollViewer>
    </StackPanel>
</Grid>

У меня раньше была похожая проблема, которую мне удалось решить с помощью Stack Overflow ... и все же, я снова здесь, прося помощи по той же теме ... спасибо куча!

UPDATE: Исходя из предложений, я удалил StackPanels и заменил их на Grids. Форматирование идеально, но у меня все та же проблема с прокруткой! Контент все еще возвращается к началу!

<Grid Name="DetailPane" Margin="0,0,0,65" VerticalAlignment="Bottom" Visibility="Collapsed" Background="White" Opacity="0.85">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0" VerticalAlignment="Top">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Button Grid.Row="0"  Margin="0" Padding="0" Click="CloseDetailPanel" HorizontalAlignment="Right" >
            <Button.Content>
                <Image Source="images\appbar.close.rest.small.png" Width="20" Height="20"></Image>
            </Button.Content>
        </Button>
    </Grid>
    <Grid Grid.Row="1">
        <ScrollViewer x:Name="contentScrollViewer" VerticalAlignment="Top">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <TextBlock Grid.Row="0" Padding="10,0,10,0" HorizontalAlignment="Left" Name="titleTextBlock" TextWrapping="Wrap" Foreground="#FF2B2929" FontWeight="Bold" />
                <Image x:Name="contentThumbnail" Grid.Row="1" Source="bild.jpg" Visibility="Visible" Width="400" Height="300" Margin="10" />
                <TextBlock Grid.Row="2"  Padding="10" HorizontalAlignment="Left" Name="statusTextBlock" TextWrapping="Wrap" Foreground="#FF2B2929" />
                <HyperlinkButton Grid.Row="3" Padding="0,5,0,10" x:Name="WikipeadiaLink" HorizontalAlignment="Left" VerticalAlignment="Bottom" Content="More on Wikipedia" TargetName="_blank"  NavigateUri="" Foreground="Blue" FontSize="18" />
            </Grid>
        </ScrollViewer> 
    </Grid>
</Grid>

Ответы [ 2 ]

1 голос
/ 24 октября 2011

В конце концов, это решило добавление статической высоты к ScrollViewer.Я понимаю, что никто не мог бы увидеть это, поскольку я опустил часть кода, которая показывает, что это внутри PivotItem.

Согласно этому обсуждению: http://forums.create.msdn.com/forums/t/84933.aspx ScrollViewer перестает работать должным образом, когда оннаходится в центре, если не определена статическая высота.

Разъяренный!

1 голос
/ 23 октября 2011

Это из-за stackPanel, попробуйте заменить его на что-то еще, например Grid.

Попробуйте, я удалил лишнюю сетку и добавил растянутое выравнивание для средства просмотра прокрутки:

<Grid Name="DetailPane" Margin="0,0,0,65" VerticalAlignment="Bottom" Visibility="Collapsed" Background="White" Opacity="0.85">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Button Grid.Row="0"  Click="CloseDetailPanel" HorizontalAlignment="Right" VerticalAlignment="Top">
        <Button.Content>
            <Image Source="images\appbar.close.rest.small.png" Width="20" Height="20"></Image>
        </Button.Content>
    </Button>


        <ScrollViewer x:Name="contentScrollViewer" VerticalAlignment="Stretch" Grid.Row="1"HorizontalAlignment="Stretch">
            <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <TextBlock Grid.Row="0" Padding="10,0,10,0" HorizontalAlignment="Left" Name="titleTextBlock" TextWrapping="Wrap" Foreground="#FF2B2929" FontWeight="Bold" />
                <Image x:Name="contentThumbnail" Grid.Row="1" Source="bild.jpg" Visibility="Visible" Width="400" Height="300" Margin="10" />
                <TextBlock Grid.Row="2"  Padding="10" HorizontalAlignment="Left" Name="statusTextBlock" TextWrapping="Wrap" Foreground="#FF2B2929" />
                <HyperlinkButton Grid.Row="3" Padding="0,5,0,10" x:Name="WikipeadiaLink" HorizontalAlignment="Left" VerticalAlignment="Bottom" Content="More on Wikipedia" TargetName="_blank"  NavigateUri="" Foreground="Blue" FontSize="18" />
            </Grid>
        </ScrollViewer>

</Grid>
...