locked
ScrollViewer не корректно отображает элемент большого размера RRS feed

  • Общие обсуждения

  • Обнаружил что, если в ScrollViewer содержится элемент большого размера, то после определенного порога этот элемент перестает корректно отображаться на экране. А что, если мне нужно загрузить и отобразить документ в котором 1500 станиц? В конце документа начинаются глюки, появляется то, что ниже уровнем, чем ScrollViewer. Если пролистать, изображение мерцает. Кто-нибудь знает - это можно как-то починить?

    Вот простой пример:

    <Page
        x:Class="App1.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:App1"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid>
            <ScrollViewer x:Name="scrollViewer" VerticalScrollBarVisibility="Auto" ViewChanged="OnViewChanged" >
                <Rectangle Height="2100000" Fill="AliceBlue"></Rectangle>
            </ScrollViewer>
            <TextBlock IsHitTestVisible="False" x:Name="textBlock" Foreground="Red" Margin="0,50,0,0" FontSize="30" Text=""></TextBlock>
        </Grid>
    </Page>

    public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            private void OnViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
            {
                this.textBlock.Text = "offset: " + ((ulong)scrollViewer.VerticalOffset).ToString();
            }
        }

    30 января 2015 г. 16:20

Все ответы

  • Подозреваю, что глюк из за нехватки памяти. Если задача в отображении больших объектов, то тут нужно копать в сторону оптимизации за рамками стандартных возможностей.

    Не подскажу направление, так как передо мной таких задач не было.


    VB.Net - WPF, WinRT, WP

    16 марта 2015 г. 14:33