Not quite what you're describing, but very similar.
The resultant list is scrollable, but not constrained to whole lines, so it can be shown with 1/2 line, 1 line, 1/2 line in your example.
1. Set the
ScrollViewer.HorizontalScrollBarVisibility
attached property of the listbox to false.
2. Add an ItemsPanelTemplate to your list box as follows:
<listbox itemssource="{Binding Entries}" scrollviewer.horizontalscrollbarvisibility="Disabled">
<listbox.itemspanel>
<itemspaneltemplate>
<wrappanel />
</itemspaneltemplate>
</listbox.itemspanel>
...
</listbox>
This makes the list box use a wrap panel to layout items. It was necessary to disable the horz scroll bar in step (1) to prevent this placing all items on one line.
3. Define an item template for the list box items. The following worked on a simple test.
<listbox.itemtemplate>
<datatemplate>
<grid width="100" height="100">
<grid.rowdefinitions>
<rowdefinition height="2*" />
<rowdefinition height="*" />
</grid.rowdefinitions>
<textblock grid.row="0" text="{Binding Title}" horizontalalignment="Center" fontsize="36" />
<textblock grid.row="1" text="{Binding Description}" horizontalalignment="Center" />
</grid>
</datatemplate>
</listbox.itemtemplate>
The result is a list box that lays out along each row, then wraps to the next line.