2011-12-01 77 views
3

我有文本换行的问题。没有StackPanel这个TextBlock的作品,但我需要把小图片放在文字之前。此外,我不为这个两列(我只需要使用一个排前三列)StackPanel中的文本不会换行(wp7)

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <Grid> 
      <Grid.RowDefinitions > 
       <RowDefinition Height="60"/> 
       <RowDefinition Height="170"/> 
       <RowDefinition Height="50"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 

      <TextBlock Grid.Row="0"></TextBlock>         
      <TextBlock Grid.Row="1"></TextBlock>         
      <TextBlock Grid.Row="2"></TextBlock>         
      <StackPanel Grid.Row="3" Orientation="Horizontal"> 
        <Image Source="Picture.png" MaxHeight="20" MaxWidth="40" HorizontalAlignment="Center" Margin="0,20,0,0" /> 
        <TextBlock Text="Long long long text from Binding" FontSize="25" HorizontalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap" VerticalAlignment="Bottom" Padding="20,10,0,0" /> 
      </StackPanel> 
     </Grid> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

回答

2

一个StackPanel会给其成分取决于Orientation无限的高度或宽度。

如果我看看你的XAML我建议在网格中使用两列,并把图像左侧:

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="40" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions > 
       <RowDefinition Height="60"/> 
       <RowDefinition Height="170"/> 
       <RowDefinition Height="50"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 

      <TextBlock Grid.Row="0" Grid.ColumnSpan="2"></TextBlock> 
      <TextBlock Grid.Row="1" Grid.ColumnSpan="2"></TextBlock> 
      <TextBlock Grid.Row="2" Grid.ColumnSpan="2"></TextBlock> 
      <Image Grid.Row="3" Source="Picture.png" MaxHeight="20" HorizontalAlignment="Center" Margin="0,20,0,0" /> 
      <TextBlock Grid.Column="1" Grid.Row="3" Text="Long long long text from Binding" FontSize="25" 
         HorizontalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap" 
         VerticalAlignment="Bottom" Padding="20,10,0,0" /> 
     </Grid> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

通知Grid.ColumnSpan第一个文本框,这将跨越他们在网格的整个宽度上,而不仅仅是第一列。

+0

经过测试,作品!谢谢,我不知道这样的ColumnSpan选项 – Karloss