网格视图在数据绑定期间不可滚动

本文关键字:滚动 视图 数据绑定 网格 | 更新日期: 2023-09-27 17:56:33

我正在创建一个Windows 8应用程序(不是桌面应用程序)。我的问题如下:我有一个包含很多项目的 GridView(从数据库接收)。当你到达显示此 GridView 的页面时,你将立即看到其中的一些数据,但根据你的硬件,你将无法在开始时滚动它,只能在几秒钟后滚动它(在 Surface 上,这是 2-3 秒)。这当然是糟糕的用户体验。 我想,我会向用户使用一些进度条或活动指示器,但我不知道何时停止显示它。

是否有一些属性、方法、事件或其他东西可以帮助我找出,在什么时间点我真的可以开始滚动GridView

网格视图在数据绑定期间不可滚动

示例:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Row="1">
            <ListView Name="listView" Margin="5" Grid.Row="1">
                <ListView.View>
                    <GridView AllowsColumnReorder="True">
                        <GridViewColumn DisplayMemberBinding="{Binding Path=.}" Header="Whatever" Width="140"/>
                    </GridView>
                </ListView.View>
            </ListView>
        </ScrollViewer>
    </Grid>
</Window>
我没有

一个完美的答案,如果存在,我也想知道它,但这里有一些建议:

  • 如果可能,请使用虚拟化。我们在 Surface 上也遇到了严重的性能问题,切换到虚拟化面板有很大帮助。

  • 可以尝试侦听 GridView 中每个项上的已加载事件,加载 100% 的项目后,启用滚动或隐藏进度 UI 应该是安全的。