我发现 ListView 和 DataGrid 在更新绑定的 ItemsSource 时性能都非常差。虽然只有大约 1500 个项目,但在功能强大的机器上仍然需要近 10 秒的时间。在 SO 的许多问题中,有很多关于如何解决此问题的建议。大多数建议都是关于虚拟化的。它们都不适合我的情况。
删除 SelectedValue 和 SelectedValuePath 绑定后,ListView 和 DataGrid 都变得快如闪电。
我现在使用 SelectedIndex,而不是使用 SelectedValue 和 SelectedValuePath。看起来它根本不影响性能。我相信我可以使用的另一种选择是 SelectedItem,但我还没有尝试过。我可能很快就会。
对于我来说,为什么 SelectedValue 和 SelectedValuePath 的更新速度如此之慢仍然是个谜。也许它们在某些情况下可以更好地工作,例如与 ObservableCollection 我不能在我的情况下使用。
我发布这个问题和这个答案的原因是我已经看到了所有这些关于这些控件在类似场景中性能缓慢的问题和答案,并且有很多关于答案不起作用的评论。尽管如此,我还没有看到 SelectedValue 和 SelectedValuePath 作为问题被提及。似乎很明显应该提到它,所以我们就在这里。