К какой высоте вы обращаетесь? Сам контроль? Или элементы внутри ListBox?
Если вы ссылаетесь на высоту элемента управления, по умолчанию он установлен на «растянуть», поэтому он расширится относительно своего родителя:
<Grid Name="LayoutRoot" Height="500">
<ListBox />
</Grid>
Если вы хотите, чтобы ListBox расширялся без привязки к его родителю:
установить его VerticalAlignment = "Top":
<Grid Name="LayoutRoot" Height="500">
<ListBox VerticalAlignment="Top" />
</Grid>
или
<Grid Name="LayoutRoot" Height="500">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ListBox VerticalAlignment="Top" Grid.Row="0" />
</Grid>
Сетка будет расширяться по отношению к ее содержимому, а не к его родителю. Вы также можете использовать конвертеры, связанные со свойством высоты, или установить высоту в коде XAML.
Если вы говорите о содержимом ListBox, создайте ItemTemplate. ItemTemplate будет определять, как будет отображаться каждое содержимое.
Вы также можете установить панель элементов, это будет диктовать, как будет отображаться список.
Вы можете использовать Stackpanel / WrapPanel.