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
。