2013-03-07 4 views
0

У меня есть Grid, который содержит ListView:высота WPF ListView в

<Grid > 
<Grid.RowDefinitions> 
    <RowDefinition /> 
    ... 
    </Grid.RowDefinitions> 
    <ListView Grid.Row="0"> 
    <ListViewItem > 
    ... 
    </ListViewItem> 

    ... 

</ListView> 
</Grid> 

И ListView становится выше, то все его элементы, она занимает все доступное пространство.

Как сделать ListView ровно столько же, сколько и все ListViewItems содержит (т. Е. Делает высоту равной сумме их высот)?

ответ

2

Это должно произойти автоматически, если вы не установили свойство 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.

+0

Как-то это не так. Он занимает все свободное место. –

+0

Итак, я понял, что ваш вопрос означал, что сумма высот ListViewItem больше высоты ListView. Если ваша ситуация противоположна ... т. Е. Сумма высот ListViewItem меньше высоты ListView. Это, скорее всего, потому, что ListView автоматически занимает все доступное пространство в родительском элементе управления. По умолчанию, если вы не укажете горизонтальное и вертикальное выравнивание, ListView попытается занять все пространство (т. Е. Растянуть). Я отредактирую свой ответ, чтобы показать вам, как это исправить. – failedprogramming