WPF Listbox Wrapping

Jeff picture Jeff · Nov 9, 2010 · Viewed 12.1k times · Source

I have a listbox in which I use a ListBox.ItemsPanel - WrapPanel.

<ListBox ItemsSource="{Binding Path=Applets}" Margin="10,92,10,10" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >

        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>

                <WrapPanel Orientation="Vertical" IsItemsHost="True">

                </WrapPanel>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>



        <ListBox.ItemTemplate>...

I am trying to have the wrappanel have a behavior such that the items fill in to the right as the width is made wider and wrap as needed when the window is made narrower. I have played with it but the correct combination eludes me. Does anyone have a suggestion?

My next goal would be able to reorder/ sort the items and have the render update.

TIA

Answer

Thomas Levesque picture Thomas Levesque · Nov 10, 2010

I am trying to have the wrappanel have a behavior such that the items fill in to the right as the width is made wider and wrap as needed when the window is made narrower. I have played with it but the correct combination eludes me. Does anyone have a suggestion?

The code you have is almost correct, just change the Orientation to Horizontal and it should work as you describe

My next goal would be able to reorder/ sort the items and have the render update.

You don't have to do anything special for that, it's the normal behavior of a ListBox. Just change the sort order (using ICollectionView.SortDescriptions), and the UI will reflect the changes