当ListView为VerticalAlignment="Stretch"时,在ListView中垂

本文关键字:quot ListView 中垂 Stretch VerticalAlignment | 更新日期: 2023-09-27 18:17:00

我们如何使ListView行为正常?我试图在我的ListView内垂直滚动,我最终能够得到一些垂直滚动,但ListView不断扩大的高度!设置MaxHeight没有任何作用

    <StackPanel x:Name="ActivityLog" Margin="0, 201, 0, 0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Visible">
            <ListView x:Name="ActivityList" ItemsSource="{Binding Activities}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderBrush="{x:Null}" HorizontalContentAlignment="Center" FontSize="14">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Message}" Background="{x:Null}" HorizontalAlignment="Stretch" Padding="5" TextAlignment="Center" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True" />
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </ScrollViewer>
    </StackPanel>

我很茫然。请帮助。我如何让列表视图只是垂直滚动,永远不会改变高度,永远不会显示水平滚动条?

当ListView为VerticalAlignment="Stretch"时,在ListView中垂

删除StackPanel。这可以防止ListView(或任何其他子节点)具有分隔的大小。这就是为什么你没有得到任何滚动条,因为ListView有一个无限的高度,由StackPanel布局。

此外,只有一个孩子的StackPanel是没有意义的。它应该"堆叠"它的子节点。

编辑:也删除ScrollViewer,因为ListView已经有一个ScrollViewer在它里面,按照默认模板。当然,除非您为此更改了默认的ControlTemplate