当scrollviewer到达底部时,如何使用wpf DataGrid Control进行延迟加载?

时间:2010-10-14 12:38:10

标签: c# wpf

<ScrollViewer Name="svDataGrid" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" ScrollChanged="ScrollViewer_ScrollChanged" >
        <DataGrid VerticalScrollBarVisibility="Disabled"   Background="Transparent" Visibility="Collapsed" Name="dgList" Grid.Row="1" IsSynchronizedWithCurrentItem="True"
                     AutoGenerateColumns="False" AlternatingRowBackground="Azure"
                     CanUserAddRows="False" CanUserDeleteRows="False"
                     CanUserSortColumns="True" CanUserReorderColumns="False"
                     CanUserResizeColumns="True" CanUserResizeRows="False" IsReadOnly="True" MouseDoubleClick="dgList_MouseDoubleClick"  PreviewKeyDown="dgList_PreviewKeyDown">

        </DataGrid>
        </ScrollViewer>

2 个答案:

答案 0 :(得分:0)

你的代码可能无法完成你想要的东西(至少这是我的猜测,因为你没有陈述你真正想要的东西)。

DataGrid确实包含它自己的Scrollbars,并且通过将DataGrid放入ScrollViewer,您将告诉DataGrid达到最大大小,不需要滚动(ScrollViewer会处理它)。因此,网格将加载并呈现其所有内容。

建议摆脱ScrollViewer,这样就可以对DataGrid本身使用正确的滚动技术。然后你可能想要寻找DataGrid虚拟化(但我不确定你真正想要实现什么,所以它可能会有所不同)。

答案 1 :(得分:0)

我想不出有任何理由将ScrollViewer与DataGrid一起使用,正如@Sam所说,DataGrid有自己的Scrollbars。如果您的原因是因为要捕获ScrollChanged事件,则可以使用DataGrid上的附加属性来执行此操作:

<DataGrid ScrollViewer.ScrollChanged="ScrollViewer_ScrollChanged"  ...>
</DataGrid>