2011-01-02 14 views
5

Tengo un ListBox que tiene StackPanel s sostienen un TextBlock y un Image horizontal, seguida de una ContentPresenter. Esto es lo que se ve como el XAML:WP7 TextBlock dentro de un cuadro de lista no ajustar el texto

<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> 

Soy la creación de la ItemsSource del ListBox a un ObservableCollection dentro de la página constructor. Todo funciona bien hasta que el texto Header sea demasiado largo, en cuyo caso no se ajusta como lo he especificado. ¿Cómo puedo forzar el TextBlock para ajustar el texto?

Gracias por su ayuda!

Respuesta

8

Esto es probablemente un resultado de no restringir el ancho del TextBlock, por lo que está creciendo horizontalmente fuera de la pantalla donde no se puede ver.

+0

¿Pero no debería la propiedad TextWrapping encargarse de eso? ¿Hay alguna otra forma de resolver este problema? Por ejemplo, usar Grids en lugar de StackPanels para contener los UIElements. – Praetorian

+0

No estoy seguro de cómo Text Wrapping sabría cuál es el límite horizontal si no está restringido de alguna manera. –

+0

Tenías razón, solucioné el problema agregando un evento 'SizeChanged' al' TextBox' y estableciendo su ancho en función del ancho de la página. – Praetorian

Cuestiones relacionadas