Я хочу создать представление для папок, реализованное с помощью ListView. Особенность заключается в том, что ListView не должен расширяться до полноэкранного режима, а должен увеличиваться в зависимости от содержимого. Оставшееся пространство должно иметь фоновый цвет.
Чтобы реализовать это поведение, я использую сетку с двумя строками. Проблема в том, что список больше, чем должен быть. Я понятия не имею, откуда взялось это дополнительное пространство? После строки «Папка 6» не должно быть лишнего пробела.
<Grid BackgroundColor = "{StaticResource backgroundColor}">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<ListView
x:Name = "folderList"
VerticalOptions = "StartAndExpand"
ItemsSource = "{Binding DocumentsGrouped}"
IsGroupingEnabled = "True"
HasUnevenRows = "True"
Footer = ""
GroupDisplayBinding = "{Binding Key}"
>
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell Height = "30">
<Frame
BorderColor = "#D1D1D5"
CornerRadius = "0" HasShadow = "False"
BackgroundColor = "#EFEFF4"></Frame>
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell Height = "40" StyleId = "disclousure">
...
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
Мне нужно, чтобы высота списка основывалась на количестве элементов, а не на половине экрана.





a strange additional space?
Это ожидаемые результаты. Поскольку вы помещаете список в Сетка, который имеет две строки.
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
И кажется, что вы забыли установить высоту строки. Таким образом, высота по умолчанию каждой строки составляет половину высоты экрана.
Когда в вашем списке 6 элементов. Высота списка меньше строки. Итак, есть странное дополнительное пространство. Если вы добавите больше элементов в список, пространство будет «отклоняться». И я предлагаю вам установить высоту строки.
Спасибо за Ваш ответ! Я не могу установить фиксированную высоту строки, потому что не знаю, сколько элементов будет в списке. Я также пытался использовать стек, но список расширяется до полноэкранного режима.
Есть ли у него элементы во второй строке?
Нет, вторая строка всегда пуста и всегда должна быть оставшимся местом
Почему вы не знаете, сколько элементов будет в списке? Я думаю, вы можете получить число и рассчитать высоту строки.
Привет, я могу решить эту проблему только с помощью этого подхода: xamarinsharp.com/2017/05/20/…, но это не очень приятно :-(