показване на дълъг текст вътре в текстов блок на два реда

Имам списъчно поле, което съдържа текстов блок и изображение. Искам, ако текстът е твърде дълъг, да отиде на втори ред. В момента се вижда само част от текста. Ето моят 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
@ChrisW. Редактирах екранна снимка на проблема. Надявам се, че сега разбирате по-добре.   -  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