在两行的文本块中显示一个长文本

时间:2013-01-15 21:42:20

标签: windows-phone-7 xaml textblock

我有一个包含文本块和图像的列表框。我想如果文字太长则转到第二行。目前只有文字可见。这是我的XAML

 <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding imgurl}" MaxHeight="120" MaxWidth="120" Margin="0,10,0,0" />
                            <TextBlock Text="{Binding title}" Margin="50,0,12,0" />
                        </StackPanel>
                    </DataTemplate>
  </ListBox.ItemTemplate>

有人能帮助我吗?

截图 enter image description here

1 个答案:

答案 0 :(得分:0)

啊啊,所以我猜它就像看起来一样简单。您只需要限制文本的位置宽度并调用TextWrapping,您可以使用多个选项来完成该操作。这里有几种可能性......

 <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding imgurl}" MaxHeight="120" MaxWidth="120" Margin="0,10,0,0" />
                            <TextBlock Text="{Binding title}" Margin="50,0,12,0" TextWrapping="Wrap" MaxWidth="{Binding ActualWidth, ElementName=Self}"/>
                        </StackPanel>
                    </DataTemplate>
  </ListBox.ItemTemplate>

或者你可以让一个小组做它应该受到其父母的限制......

<ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="0,10,0,0">
                            <Grid.ColumnDefinitions>
                               <ColumnDefinition/>
                               <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Source="{Binding imgurl}" MaxHeight="120" MaxWidth="120" />
                            <TextBlock Grid.Column="1" Text="{Binding title}" TextWrapping="Wrap" Margin="50,0,2,0" />
                        </Grid>
                    </DataTemplate>
  </ListBox.ItemTemplate>

或者取决于这个ListBox如何作为一个孩子布局,它甚至可能就像将TextWrapping="Wrap"添加到TextBlock然后在ListBox本身上设置MaxWidth一样简单。无论哪种方式,希望这有助于...:)