我有一个ListView
有定制的细胞(项目)。
这ListView
代表两个人交换消息与我的应用程序之间的对话。 每次添加一个消息,通话自动滚动到最后一个项目。
我面临着一些“奇怪”的问题:
当用户写入一个相当长的消息(比如,10行),它可以然后占用几乎整个屏幕(意味着分配给的空间ListView
),这是正常的,当然但随后的滚动是有些破碎 。
首先,当列表自动滚动到这个消息,一个白色的大空间出现在项目下一路下跌到我的底部ListView
。 见图片:
当消息很短(单行):
其次,在所有情况下,滚动速度是远远快。 单谅解备忘录轮“中风”(在你滚动你的手指的感觉)将太快移动滚动条:多达4个的小消息滚动! 这太多了 !
所以问题是:如何控制滚动速度? 如何慢下来? 为什么会有这么大的空白? 谢谢您的帮助 !
[UPDATE 1]
通过@CurtisHx我的请求ListView XAML
是如下:
http://pastebin.com/FFZGhi6w
我希望它有助于理解我的问题!
一种方法是设置ScrollViewer.CanContentScroll="False"
的ListView
。 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
。 如果扩大窗口,你会看到成为交错的文本。 下面是一个代码SNIPPIT,指出TextBlock
需要被宽度有限。
<ListView x:Name="ConversationList" ScrollViewer.IsDeferredScrollingEnabled="False" ScrollViewer.CanContentScroll="False" ScrollViewer.VerticalScrollBarVisibility="Auto"
BorderBrush="Transparent" Grid.Row="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,0,10,10">
<!-- Big Snip /!-->
<ListView.ItemTemplate>
<DataTemplate>
<!-- Snip /!-->
<Border Padding="0, 15, 0, 15">
<Grid x:Name="ConversationBubble">
<Grid.RenderTransform>
<TranslateTransform />
</Grid.RenderTransform>
<Border Margin="70, 5, 70, 5" HorizontalAlignment="{Binding Alignment}" BorderBrush="#ECECEC" Visibility="Visible" Background="#F1F1F2" Padding="10">
<StackPanel>