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