gpt4 book ai didi

c# - WPF 工具包 DataGrid 滚动性能问题 - 为什么?

转载 作者:IT王子 更新时间:2023-10-29 04:24:20 24 4
gpt4 key购买 nike

我在使用(WPF 工具包)DataGrid 时遇到了性能问题。它包含大约 1.000 行(只有 8 列),滚动非常缓慢和滞后。包含 DataGrid 的窗口的初始加载也需要 5-10 秒。

我做了一些研究(使用谷歌和 StackOverflow)但除了打开 UI 虚拟化的建议之外找不到任何东西。但即使在明确启用滚动之后仍然非常慢。

我的 DataGrid 绑定(bind)到 ICollectionView/CollectionViewSource。它在 XAML 中是这样定义的(列是明确定义的,不是自动生成的):

    <tk:DataGrid x:Name="dataGrid" 
ItemsSource="{Binding Path=Bookings}"
AutoGenerateColumns="False"
Grid.Row="1"
EnableRowVirtualization="True"
EnableColumnVirtualization="True"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
...
</tk:DataGrid>

整个窗口的 DataContext 设置为包含 DataGrid 绑定(bind)到的 ICollectionView 的类的实例。

我发现的每篇博客或论坛帖子都在赞扬 DataGrid 的性能,所以我显然做错了一些严重的事情。由于一般来说我对 WPF 很陌生,尤其是对 DataGrid,所以我不知道如何改进它。 有人对我有什么建议吗?您使用 DataGrid 的体验如何?我做错了什么?

编辑:刚刚关注this问题的建议是将所有列的宽度设置为“自动”。这没有改变糟糕的滚动性能。我也没有使用 DataGridTemplateColumns(只有一些 DataGridTextColumns 和两个 DataGridComboBoxColumns)。

Edit2:我使用 Snoop 查看我的应用程序。我所看到的表明虚拟化确实有效(只有 19 行,而不是一千行)。但是每行包含 52 个元素,所以这些元素加起来超过 1000 个元素。这可能是一个/问题吗?

非常感谢!

最佳答案

DataGrid 有一个附加属性 ScrollViewer.CanContentScroll,它管理此行为。要获得平滑滚动,您需要将其设置为 False

关于c# - WPF 工具包 DataGrid 滚动性能问题 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1704512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com