2015-02-11 2 views
0

У меня есть следующие ListView в моем макете XAML:ListView не Scrollable

<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 s не завершает вообще, хотя я уже установил TextWrapping.

Я довольно новичок в дизайне Windows Phone. Скажите, пожалуйста, где я сделал неправильно.

ответ

1

The 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> 
+0

Nice, it works. Однако могу ли я спросить, влияет ли это на производительность? Поскольку каждый 'ListItem' должен будет присоединить' Grid' и 'StackPanel'? –