2

我试图让我的数据在 GridLayout 中正确显示,该 GridLayout 将用作 ListBox 中项目的 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 时,Item 可以正确显示,但是当滚动 ListBox 时,一切都非常紧张,你不能以小的增量滚动,它只会到处乱跳。

有什么理由这样做吗?正如我所说,只有当 TextWrapping 设置为 Wrap 时,它才会这样做。当它不使用时,它可以很好地滚动,但文本都在一行中并且不在屏幕上。

4

3 回答 3

1

如果您将顶级 Grid 元素的宽度显式设置为固定大小,它会一直跳吗?

于 2010-04-16T19:34:31.450 回答
1

出于某种我不完全理解的原因,将 ListBox 的ItemsPanel属性设置为 StackPanel 可能会解决您的问题:

<UserControl.Resources>
    <ItemsPanelTemplate x:Key="MyItemsPanelTemplate">
        <StackPanel/>
    </ItemsPanelTemplate>
</UserControl.Resources>

...

<ListBox ... ItemsPanel="{StaticResource MyItemsPanelTemplate}"/>
于 2010-04-19T09:56:59.037 回答
0

当您有可变高度的项目时,这是当前 ctp 中列表框滚动的一个已知问题。目前的解决方法是在列表框项目内容上设置固定高度。您可能还会注意到滚动条不会一直正确地移到底部。解决方法也解决了这个问题。

参考

于 2010-05-25T00:18:41.940 回答