Это должно произойти автоматически, если вы не установили свойство Height
или MinHeight
на своем ListView
.
Редактировать: Чтобы устранить ситуацию, когда ListView занимает все свободное пространство, вы можете установить горизонтальное и вертикальное выравнивание. Я использовал параметр «Центр» в моем примере, но «Левый» или «Правый» также действителен.
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<ListView Grid.Row="0" BorderThickness="2" HorizontalAlignment="Center" VerticalAlignment="Center">
<ListViewItem>Item 1</ListViewItem>
<ListViewItem>Item 2</ListViewItem>
<ListViewItem>Item 3</ListViewItem>
</ListView>
</Grid>
Еще одно возможное решение - установить SizeToContent в вашем окне.
Но имейте в виду, что если у вас есть несколько родительских контейнеров, которые переносят ваш ListView, и вы вручную устанавливаете выравнивания или свойства размера в этих контейнерах, это решение может работать не так, как ожидалось.
Вы можете взглянуть на это link, чтобы узнать больше о том, как макет работает в xaml.
Как-то это не так. Он занимает все свободное место. –
Итак, я понял, что ваш вопрос означал, что сумма высот ListViewItem больше высоты ListView. Если ваша ситуация противоположна ... т. Е. Сумма высот ListViewItem меньше высоты ListView. Это, скорее всего, потому, что ListView автоматически занимает все доступное пространство в родительском элементе управления. По умолчанию, если вы не укажете горизонтальное и вертикальное выравнивание, ListView попытается занять все пространство (т. Е. Растянуть). Я отредактирую свой ответ, чтобы показать вам, как это исправить. – failedprogramming