2015-02-11 74 views
0

我在XAML佈局以下的ListView: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> 

不過,我遇到兩個問題:

  • 清單並不滾動當它長於屏幕。
  • 雖然我已經設置了TextWrapping,但是TextBlock完全不包裝。

我對Windows Phone設計很新穎。請告訴我我在哪裏做錯了。

回答

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

不錯,它的工作原理。但是,請問是否影響性能?由於每個ListItem都必須附加一個Grid和一個StackPanel? – 2015-02-12 05:15:26