2011-01-02 16 views
5

Ich habe ein ListBox die StackPanel s hat einen horizontal und einen TextBlockImage halten, gefolgt von einem ContentPresenter. Dies ist, was die XAML wie folgt aussieht:WP7 Textblock innerhalb einer ListBox nicht Textumbruch

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

ich die ItemsSource des ListBox zu einem ObservableCollection innerhalb der Seite Konstruktor setzen. Alles funktioniert gut, bis der Header Text zu lang wird, in diesem Fall wickelt er nicht, wie ich es spezifiziert habe. Wie kann ich die TextBlock zwingen, den Text zu wickeln?

Danke für Ihre Hilfe!

Antwort

8

Dies ist wahrscheinlich ein Ergebnis nicht die Breite des TextBlock zu beschränken, so dass es horizontal außerhalb des Bildschirms wächst, wo Sie es nicht sehen können.

+0

Aber sollte nicht die TextWrapping-Eigenschaft dafür sorgen? Gibt es eine andere Möglichkeit, dieses Problem zu lösen? Verwenden Sie beispielsweise Grids anstelle von StackPanels, um die UIElements zu speichern. – Praetorian

+0

Ich bin nicht sicher, wie das TextWrapping wissen würde, was die horizontale Grenze ist, wenn es nicht irgendwie eingeschränkt ist. –

+0

Sie hatten Recht, ich habe das Problem behoben, indem ich ein 'SizeChanged' -Ereignis zur' TextBox' hinzugefügt und seine Breite basierend auf der Seitenbreite festgelegt habe. – Praetorian

Verwandte Themen