在dataBinding期间GridView不可滚动?

时间:2013-01-30 10:13:55

标签: c# xaml data-binding gridview windows-8

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

是否有某些属性,方法,事件或其他内容可以帮助我找到,在什么时候我可以真正开始滚动GridView

2 个答案:

答案 0 :(得分:0)

示例:

<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>

答案 1 :(得分:0)

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

  • 尽可能使用虚拟化。 Surface也存在严重的性能问题,切换到虚拟化面板有很大帮助。

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