我试图让我的数据在GridLayout中正确显示,GridLayout将用作ListBox中Item的DataTemplate。这是与我正在做的事情相关的代码:
<Grid Name="FeedItemTemplate">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image Source="{Binding ProfileImage}" Grid.RowSpan="2" Height="75" Width="75" VerticalAlignment="Center" Margin="1" />
<TextBlock Text="{Binding UserName}" Grid.Column="1" Foreground="#FFC8AB14" FontSize="28" HorizontalAlignment="Left"/>
<TextBlock Text="{Binding TimeStamp}" Grid.Column="2" TextWrapping="Wrap" FontSize="18" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding Message}" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" TextWrapping="Wrap" FontSize="24" />
</Grid>
问题是使用这种布局,当TextWrapping设置为Wrap时,项目显示正确,但是当滚动ListBox时,一切都非常紧张,你不能以小的增量滚动,它只是跳到了整个地方。
为什么会这样做?正如我所说,只有当TextWrapping设置为Wrap时才会这样做。当它没有被使用时,它滚动得很好,但是文本是沿着一条线而不是屏幕。
答案 0 :(得分:1)
如果您将顶级Grid元素的宽度明确设置为固定大小,它是否会继续跳跃?
答案 1 :(得分:1)
由于某些我不完全理解的原因,将ListBox的ItemsPanel属性设置为StackPanel可能会解决您的问题:
<UserControl.Resources>
<ItemsPanelTemplate x:Key="MyItemsPanelTemplate">
<StackPanel/>
</ItemsPanelTemplate>
</UserControl.Resources>
...
<ListBox ... ItemsPanel="{StaticResource MyItemsPanelTemplate}"/>
答案 2 :(得分:0)
当您拥有可变高度项时,这是当前ctp中列表框滚动的已知问题。现在的解决方法是在列表框项目内容上设置固定高度。您可能还会注意到滚动条始终没有正确地显示在底部。解决方法也解决了这个问题。