Перенос слов в текстовом блоке не работает - PullRequest
4 голосов
/ 12 августа 2011

У меня есть страница WPF с несколькими объектами. Внизу всех этих элементов у меня есть ярлык, который должен иметь перенос текста в содержании. Этот ответ прост, с использованием текстового блока это должно быть легко. Однако, несмотря на то, что я использую эти предметы, я все еще не могу получить текст для переноса. Поэтому я предполагаю, что в других объектах должны быть другие настройки, которые мне нужно проверить / изменить. В псевдокоде мой XAML выглядит как

<Page>
  <Stackpanel vertical>
   <Border>
    <Stackpanel vertical>
     <label></label>
    <Stackpanel horizontal>
     <label></label>
    </stackpanel>
   <label>
    <textblock TextWrapping="Wrap">
   </label>
  </border>
 </stackpanel>
</page>

Что мне здесь не хватает? Должен ли я проверять другие элементы? Я уже убедился, что ни один из вложенных элементов не имеет заданной высоты - все они установлены на auto.

Ответы [ 2 ]

7 голосов
/ 12 августа 2011

Я собираюсь опубликовать это как ответ на случай, если кто-то еще застрянет на этом.

Когда вы устанавливаете свойства Width и Height элемента управления TextBlock, он сначала будет горизонтально увеличиваться в размере, чтобы вместить столько текста, сколько может перед переносом текста(если для свойства TextWrapping установлено значение Wrap).Как только он решит, что ему нужно обернуть текст, если для Height установлено значение Авто, текстовое поле будет изменяться по вертикали, чтобы вместить текст (до тех пор, пока он не достигнет нижней части любого контейнера пользовательского интерфейса, в который вы его поместили).Если вы не хотите, чтобы размер текстового поля изменялся после определенной точки, вам необходимо установить значения для свойств MaxWidth и MaxHeight.Это заставит TextBlock обернуться на определенной ширине.

1 голос
/ 12 августа 2011

С моим XamlPadX это выглядит так:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:sys="clr-namespace:System;assembly=mscorlib"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Width="300">
  <StackPanel Orientation="Vertical">
    <StackPanel Orientation="Vertical">
     <Label>L1</Label>
     <StackPanel Orientation="Horizontal">
       <Label>L2</Label>
     </StackPanel>
     <Label>
       <TextBlock TextWrapping="Wrap">
         This text wraps.
         This text wraps.
         This text wraps.
         This text wraps.
         This text wraps.
         This text wraps.
         This text wraps.
       </TextBlock>
     </Label>
   </StackPanel>
 </StackPanel>
</Page>

Так что проблема должна быть в другом месте.

...