2011-01-02 15 views
5

Tôi có một ListBoxStackPanel s đang cầm TextBlockImage theo chiều ngang, theo sau là ContentPresenter. Đây là những gì trông giống như XAML:WP7 TextBlock bên trong ListBox không bao gói văn bản

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

Tôi đang thiết lập các ItemsSource của ListBox một ObservableCollection trong constructor trang. Mọi thứ hoạt động tốt cho đến khi văn bản Header trở nên quá dài, trong trường hợp đó nó không được gói như tôi đã chỉ định. Làm thế nào tôi có thể buộc TextBlock để bọc văn bản?

Cảm ơn sự giúp đỡ của bạn!

Trả lời

8

Đây có thể là kết quả của việc không giới hạn chiều rộng của TextBlock, vì vậy nó đang phát triển theo chiều ngang khỏi màn hình mà bạn không thể nhìn thấy nó.

+0

Nhưng không nên thuộc tính TextWrapping xử lý điều đó? Có cách nào khác để giải quyết vấn đề này không? Ví dụ, sử dụng Grids thay vì StackPanels để giữ các UIElements. – Praetorian

+0

Tôi không chắc chắn cách TextWrapping sẽ biết ranh giới nằm ngang là gì nếu nó không bị hạn chế. –

+0

Bạn đã đúng, tôi đã khắc phục sự cố bằng cách thêm sự kiện 'SizeChanged' vào' TextBox' và đặt chiều rộng của nó dựa trên chiều rộng trang. – Praetorian