2009-07-20 8 views
11

My ListBox có, trong số những thứ khác một trường mô tả trong đó có thể khá dài. Thay vì có một thanh cuộn ngang tôi muốn từ bọc nó. Tính năng này hoạt động nếu tôi đặt MaxWidth nhưng vì kích thước thay đổi là ListBox Tôi không muốn mã cứng giá trị.Mục hộp danh sách WPF không wordwrapping

Cách tốt nhất để làm điều này là gì?

EDIT: Mô tả nằm trong TextBlock.

Giản XAML (Removed thứ unnessesary, vẫn cho thấy vấn đề:

  <ListBox BorderThickness="0" Padding="5" Name="lstTasks"> 
      <ListBox.ItemsSource> 
       <Binding Source="{StaticResource dataTasks}"/> 
      </ListBox.ItemsSource> 

      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <TextBlock Text="{Binding Path=RequestDescription}" TextTrimming="WordEllipsis" TextWrapping="Wrap" Height="60" /> 
        </Grid> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
+0

Vì bạn đã nói thiết lập MaxWidth sẽ hoạt động, làm thế nào về việc ràng buộc MaxWidth với thứ gì đó gây ra chiều rộng thay đổi? –

Trả lời

29

Hãy thử buộc chiều rộng của ListBoxItems của bạn sẽ được chiều rộng của ListBox:

<ListBox 
    Name="lstTasks" 
    BorderThickness="0" 
    Padding="5" 
    HorizontalContentAlignment="Stretch"> 

Ngoài ra bạn có thể thử vô hiệu hoá ngang cuộn:

<ListBox 
    ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
    ...> 
+2

Cảm ơn, vô hiệu Thanh cuộn đã sửa nó ngay lập tức. –

+0

Cảm ơn - việc vô hiệu hóa đã làm việc cho tôi. –

+0

Nếu nó làm việc cho bạn, upvote. Stack bình luận không phải là xếp hạng ebay. – Gusdor

0

Không có ý nghĩa gì khi sử dụng gói và tr cùng nhau. Bạn nên sử dụng một trong số họ texttrimming hoặc textwrapping. Nó nó trims nó không quấn.

Để nhắn tin văn bản Câu trả lời của Matt là chính xác để cắt tỉa, bạn nên xác định chiều rộng hoặc maxwidth giá trị tài sản.

Chính xác như vậy đối với nhà phát triển SL.