отображать длинный текст внутри текстового блока в две строки

У меня есть список, который содержит текстовый блок и изображение. Я хочу, если текст слишком длинный, он переходит на вторую строку. На данный момент видно только часть текста. Вот мой 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>

Кто-нибудь может мне помочь?

Скриншот введите здесь описание изображения


person Steaphann    schedule 15.01.2013    source источник
comment
Я думаю, что могу ошибаться, но это просто экземпляр, который требует TextWrapping="Wrap" в TextBlock?   -  person Chris W.    schedule 16.01.2013
comment
@КрисВ. Я отредактировал скриншот, в чем проблема. Надеюсь, теперь вы лучше понимаете.   -  person Steaphann    schedule 16.01.2013


Ответы (1)


Ах да, так что я думаю, что это так же просто, как это выглядело. Вам просто нужно ограничить ширину вашего текста и вызвать 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. В любом случае, надеюсь, это поможет... :)

person Chris W.    schedule 15.01.2013
comment
Хорошо, большое спасибо! Я новичок в разработке Windows Phone. И трудно найти хорошую документацию. - person Steaphann; 16.01.2013
comment
@StefGeelen не беспокойтесь, мы все когда-то были там. Рад помочь. :) - person Chris W.; 16.01.2013