2011-01-02 2 views
5

У меня есть ListBox, который имеет StackPanel S, проведение TextBlock и Image по горизонтали, после чего ContentPresenter. Это то, что выглядит как XAML:WP7 TextBlock Внутри ListBox не оборачивать текст

<Grid x:Name="ContentPanel" 
     Grid.Row="1" 
     Margin="12,0,12,0"> 
    <ListBox x:Name="MainListBox" 
      Margin="12,0,12,0" 
      SelectionChanged="MainListBox_SelectionChanged"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 

     <StackPanel> 
      <toolkit:ContextMenuService.ContextMenu> 
      <toolkit:ContextMenu x:Name="ContextMenu" 
           Opened="ContextMenu_Opened"> 
       <toolkit:MenuItem Header="edit" 
           Tag="edit" 
           Click="MenuItem_Click" /> 
       <toolkit:MenuItem Header="delete" 
           Tag="delete" 
           Click="MenuItem_Click" /> 
      </toolkit:ContextMenu> 
      </toolkit:ContextMenuService.ContextMenu> 
      <StackPanel Orientation="Horizontal" 
         HorizontalAlignment="Left"> 

      <!-- **** This text won't wrap **** --> 
      <TextBlock Text="{Binding Header}" 
         TextWrapping="Wrap" 
         Style="{StaticResource PhoneTextNormalStyle}" 
         Foreground="{StaticResource PhoneAccentBrush}" /> 

      <Image Source="/image.png" 
        Visibility="{Binding ImageVisibility}" /> 

      </StackPanel> 

      <ContentPresenter Content="{Binding Content}" 
          HorizontalAlignment="Stretch" /> 

     </StackPanel> 

     </DataTemplate> 
    </ListBox.ItemTemplate> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
     <Setter Property="HorizontalContentAlignment" 
       Value="Stretch" /> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    </ListBox> 
</Grid> 

я устанавливаю ItemsSource в ListBox к ObservableCollection внутри конструктора страницы. Все работает нормально до тех пор, пока текст Header не станет слишком длинным, и в этом случае он не будет обертываться, как я указал. Как заставить текст TextBlock обернуть текст?

Благодарим за помощь!

ответ

8

Это, скорее всего, результат не ограничения ширины TextBlock, поэтому он растет горизонтально с экрана, где вы не можете его увидеть.

+0

Но не должно ли это иметь свойство TextWrapping? Есть ли другой способ решить эту проблему? Например, использование Grids вместо StackPanels для хранения UIElements. – Praetorian

+0

Я не уверен, как TextWrapping будет знать, что такое горизонтальная граница, если она не ограничена каким-то образом. –

+0

Вы были правы, я исправил проблему, добавив событие 'SizeChanged' в' TextBox' и установив его ширину на основе ширины страницы. – Praetorian

Смежные вопросы