Волнообразная или медленная прокрутка с несколькими расширителями в ScrollViewer и Grid - PullRequest
0 голосов
/ 06 мая 2011

В нескольких наших приложениях нам обычно требуется отображать много данных вместе на экране, но помещать этот контент в расширители, чтобы пользователь мог определить, что он хочет видеть или не хочет видеть в это время.

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

<ScrollViewer x:Name="sbar" Grid.Row="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" VerticalAlignment="Top">
     <Grid>
          <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

<Expander x:Name="ex1" Style="{DynamicResource GroupBoxExpander}" Width="900" HorizontalAlignment="Left" Margin="5" Grid.Row="0" Grid.Column="0" IsExpanded="True">
     <StackPanel></StackPanel>
</Expander>

<!-- in my current application, 9 more in between -->

<Expander x:Name="ex11" Style="{DynamicResource GroupBoxExpander}" Width="900" HorizontalAlignment="Left" Margin="5" Grid.Row="0" Grid.Column="0" IsExpanded="True">
     <StackPanel></StackPanel>
</Expander>
        </Grid>
    </ScrollViewer>

В этом примере мне на самом деле больше не нужно использовать сетку, но одному из наших других приложений все еще понадобится сетка. Также есть контент во всех расширителях, начиная от текстовых полей до списков и других элементов управления, но не для многих, а некоторые сильно варьируются.

Что мы можем сделать, чтобы немного ускорить это? За кулисами на самом деле не так много привязок к данным, и мы не

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Я удалил как можно больше лишних вещей (таких как сетки и некоторые панели стека, которые не использовались) и не увидел увеличения производительности. Однако я заметил, что на машинах, на которых в конечном итоге будет работать этот код (с использованием монитора с более низким разрешением), производительность была намного выше. Эта проблема связана, похоже, с визуальными элементами, доступными на экране, и с крайним случаем в моей текущей проблеме.

Поэтому я думаю, что лучший ответ - изменить дизайн интерфейса, и пользовательский опыт - лучший путь.

0 голосов
/ 06 мая 2011

удалите ненужные строки из сетки и попробуйте.

...