WPF更改ListView滚动速度

我有一个带有自定义单元格(项目)的ListView

ListView表示两个人与我的应用程序交换消息之间的对话。 每次添加消息时,对话都会自动滚动到最后一个项目。

我面临一些“奇怪”的问题:

当用户写一个相当长的消息(比如10行)时,它几乎可以占据整个屏幕(意味着分配给ListView的空间),这当然是正常的,但滚动有点破坏

首先,当列表自动滚动到此消息时,项目下方会出现一个大的空白区域,一直到我的ListView底部。 见图: 例如,大消息和大白空间

当消息很短(单行)时: 短信的示例

其次,在所有情况下,滚动速度都是快速的。 单个mous-wheel“笔划”(滚动时手指的感觉)会使滚动条移动太快:滚动最多4条小信息! 这太多了 !

所以问题是:如何控制滚动速度? 如何放慢速度? 为什么会有这么大的白色空间? 谢谢您的帮助 !

[更新1]

请求@CurtisHx我的ListView XAML如下:

http://pastebin.com/FFZGhi6w

我希望它有助于理解我的问题!

一种方法是在ListView上设置ScrollViewer.CanContentScroll="False"https://social.msdn.microsoft.com/Forums/vstudio/en-US/47bd6a75-7791-4c0f-93ae-931e9a6540e7/smooth-scrolling-on-listbox?forum=wpf

您将在ListView上放松虚拟化,因此将ListView的元素数量保持在合理的范围内。 这应该可以解决快速滚动速度。

文字对齐

文本正确对齐。 目前,父容器限制TextBlocks的宽度。 在包装文本之前, TextBlocks将填充它可以包含的所有水平空间。 因此,对于长消息, TextBlock将水平扩展,直到它达到父容器的限制。

为了获得交错的文本,消息的宽度需要小于ListView宽度。 如果你加宽窗口,你会看到文本交错。 下面是一段代码,指出需要宽度限制的TextBlock