在我们的几个应用程序中,我们通常需要在屏幕上一起显示大量数据,但将此内容放在扩展器中,以便用户可以确定他们当时想要看到或不想看到的内容。
我注意到,当我尝试使用下面类似的代码时,滚动要么是跳跃,要么比它应该的速度慢,在一台不错的机器上也是如此。
<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>
在这个例子中,我实际上不再需要使用网格了,但是我们的其他应用程序仍然需要一个网格。所有扩展器中都有内容,从文本框到列表视图和其他控件,但不是很多,有些范围很大。
我们可以做些什么来加快这一点?它背后的幕后真的没有太多的数据绑定,我们不会
答案 0 :(得分:0)
从网格中删除不必要的行并尝试一下。
答案 1 :(得分:0)
我删除了许多额外的东西(比如Grids和一些没有使用的堆栈面板),并没有真正看到性能提升。但我注意到,在这些代码最终会运行的机器上(使用较低分辨率的显示器),性能要好得多。这个问题与屏幕上可用的可视项目以及当前问题中的边缘案例相关。
因此,我认为最好的答案是重新设计界面,用户体验是前往这里的最佳途径。