2011-01-02 16 views
5

Ho una ListBox che ha StackPanel s possesso di un TextBlock e un Image orizzontalmente, seguito da un ContentPresenter. Questo è ciò che il codice XAML assomiglia:WP7 TextBlock all'interno di una ListBox non disponendo il testo

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

sto impostando la ItemsSource del ListBox a un ObservableCollection all'interno del costruttore pagina. Tutto funziona bene fino a quando il testo Header diventa troppo lungo, nel qual caso non viene eseguito il wrapping come l'ho specificato. Come posso forzare lo TextBlock per avvolgere il testo?

Grazie per il vostro aiuto!

risposta

8

Questo è probabilmente il risultato di non limitare la larghezza di TextBlock, quindi è in crescita orizzontale dallo schermo in cui non è possibile vederlo.

+0

Ma la proprietà TextWrapping non dovrebbe occuparsene? C'è un altro modo per risolvere questo problema? Ad esempio, utilizzando Griglie anziché StackPanel per contenere gli UIElements. – Praetorian

+0

Non sono sicuro di come TextWrapping possa sapere quale sia il limite orizzontale se non è in qualche modo limitato. –

+0

Avevi ragione, ho risolto il problema aggiungendo un evento 'SizeChanged' a' TextBox' e impostando la sua larghezza in base alla larghezza della pagina. – Praetorian

Problemi correlati