当ListView为VerticalAlignment =“Stretch”时,在ListView内垂直滚动

时间:2013-06-04 22:40:24

标签: c# .net wpf xaml scroll

我们如何让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只是垂直滚动,从不改变高度,从不显示水平滚动条?

1 个答案:

答案 0 :(得分:3)

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

此外,只有一个孩子的StackPanel是没有意义的。它应该&#34;堆叠&#34;它的孩子。

修改:同时删除ScrollViewer,因为ListView已根据默认模板在其中已有ScrollViewer。除非您当然更改了默认ControlTemplate