2009-09-09 8 views
6

machen Ich möchte eine ListBox Funktion wie eine Grid machen. Jedes Mal, wenn ein neues Objekt hinzugefügt wird, sollte es aussehen wie ein neues GridRow wurde hinzugefügt (mit einer Höhe von Stern). Wenn also zwei Elemente vorhanden sind, nehmen sie jeweils die Hälfte des verfügbaren Speicherplatzes ein. An einem gewissen Punkt der Grid Reihe wird kleiner sein als die Elemente MinHeight, an welchem ​​Punkt der Grid expandieren und enthält Scroll kann kicken.Wie kann ich eine ListBoxItem Strecke vertikal

Sie dieses Verhalten mit einem Gitter in einem ScrollViewer sehen. Allerdings muss ich dies mit einer ListBox arbeiten, so kann ich nur die ItemsSource setzen, erstellen Sie eine DataTemplate und weitermachen.

Das Problem mit dem Standard ListBoxItemsPanel ist, dass es nicht mein erstes Element erweitern, um den gesamten verfügbaren Speicherplatz zu füllen.

UPDATE: Hier ist der Code ist es zum Laufen zu bringen:

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

Antwort

1

Dieses SO Post ein paar ziemlich gute Informationen hat, die zu Ihrem Beitrag WPF - Why Listbox items do not fill uniformgrid

+0

Dank relevant erscheint, die geholfen haben, ich nicht verwenden das einheitliche Raster viel, also habe ich nie darüber nachgedacht. – Kelly