2009-09-09 9 views
6

Tôi muốn thực hiện chức năng ListBox như một Grid. Mỗi khi một mục mới được thêm vào, nó sẽ trông giống như một GridRow mới được thêm vào (với chiều cao của ngôi sao). Vì vậy, nếu có hai mục, mỗi người sẽ chiếm một nửa không gian sẵn có. Tại một số điểm hàng Grid sẽ nhỏ hơn so với các mặt hàng MinHeight tại thời điểm đó các Grid sẽ mở rộng và một ScrollViewer chứa có thể đá trongLàm cách nào để tạo một ListBoxItem theo chiều dọc

. Bạn sẽ thấy hành vi này với một mạng lưới bên trong một ScrollViewer. Tuy nhiên, tôi cần phải làm việc này với một số ListBox vì vậy tôi chỉ có thể đặt ItemsSource, tạo một DataTemplate và tiếp tục.

Sự cố với mặc định ListBoxItemsPanel là nó sẽ không cho phép mục đầu tiên của tôi mở rộng để lấp đầy tất cả không gian có sẵn.

UPDATE: Dưới đây là đoạn code để làm cho nó làm việc:

<ListBox VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" Width="Auto" Height="Auto"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Columns="1"></UniformGrid> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 

Trả lời

1

SO bài này có một số thông tin khá tốt mà dường như có liên quan đến bài viết của bạn WPF - Why Listbox items do not fill uniformgrid

+0

Cảm ơn đã giúp, tôi không sử dụng lưới đồng nhất nhiều nên tôi chưa bao giờ nghĩ về nó. – Kelly