ListView不可滚动

时间:2015-02-11 14:23:30

标签: xaml listview windows-phone-8.1

我的xaml布局中有以下ListView:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <StackPanel Grid.Row="0">
        <TextBlock Text="{StaticResource AppName}" Style="{StaticResource TitleTextBlockStyle}"/>
    </StackPanel>

    <StackPanel Grid.Row="1">
        <ListView x:Name="lstStatus">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Margin="12">
                        <Image Source="ms-appx:///Assets/Logo.png" Margin="12" Width="150" Height="150"></Image>

                        <StackPanel Orientation="Vertical">
                            <TextBlock Text="{Binding Path='Fullname'}" Style="{StaticResource ListViewItemSubheaderTextBlockStyle}"></TextBlock>
                            <TextBlock Text="{Binding Path='FormattedCreationTime'}" TextWrapping="WrapWholeWords"></TextBlock>

                            <TextBlock Text="{Binding Path='Text'}" Style="{StaticResource ListViewItemContentTextBlockStyle}" TextWrapping="WrapWholeWords" Margin="12"></TextBlock>
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackPanel>

</Grid>

然而,我遇到了两个问题:

  • 当列表长于屏幕时,列表不可滚动。
  • 尽管我已设置TextBlock。{/ li>,但TextWrapping根本不会换行

我是Windows Phone设计的新手。请告诉我我哪里做错了。

1 个答案:

答案 0 :(得分:1)

StackPanel占用了所需的空间。随着ListView的增长,StackPanel扩展以允许它增长,因此您无法滚动查看屏幕上未显示的项目。

将ListView放在网格中或限制StackPanel的高度。

<Grid Grid.Row="1">
    <ListView x:Name="lstStatus">
    ...

类似的问题出现在你的ItemTemplate中,修复也类似。

<DataTemplate>
    <Grid Margin="12">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Image ...

        <StackPanel Grid.Column="1">
            <TextBlock ....
        </StackPanel>
    </Grid>
</DataTemplate>