如何从滚动查看器的最后一项中删除额外的边距?

How to remove additional margin from last item in scrollviewer?

这个问题我用了3天,所以在这里问一下。

我有一个包含一些收据项的列表框。当我添加前几项时,一切正常:

但是一旦将项目添加到 "overflow" 滚动查看器的列表框,随机边距就会突然出现,我不知道如何摆脱它:

我尝试了不同版本的 .NET 框架,在 4.5 中没有发生这种情况,但不幸的是我绑定到 .NET 3.5

这是具有相同行为的 link 到 "sandbox" 应用程序:link

有人有什么想法吗?

要求如下:

您已在 ScrollContentPresenter 上设置 CanContentScroll="True",这意味着您需要逐项滚动。如果您设置 CanContentScroll="False",您将不会在底部看到任何空的 space。原因是现在 listBox 将使用逐像素滚动。

随着项目的滚动,列表框会保留一些 space 以确保下一个项目完美地出现在视口中。因此,您会在底部看到空 space。

但是,将其设置为 false 将禁用 UI 虚拟化。所以,这是空 space 和虚拟化之间的一种权衡。

也就是说,您提到它在 .Net4.5 中工作正常,但事实并非如此。我也在你的样本中尝试了 4.5,结果仍然相同。