0

我有一个包含文本块和图像的列表框。如果文本太长,我想要它转到第二行。目前只有文本是可见的。这是我的 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>

有人可以帮助我吗?

截屏 在此处输入图像描述

4

1 回答 1

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 然后MaxWidth在 ListBox 本身上设置一样简单。无论哪种方式,希望这会有所帮助...... :)

于 2013-01-15T22:53:55.070 回答