Я хочу поддерживать полностью декларативный интерфейс с привязкой данных Xamarin.
Я следил за этой темой, которая является кошмаром, который плохо кончается.
https://forums.xamarin.com/discussion/19874/listview-inside-stacklayout-a-height-problem/p2
Они, по сути, остановились на этом, пытаясь динамически изменять размеры списков в зависимости от содержимого (выглядит хрупко): Xamarin.Forms Размер ListView для содержимого?
Используя этот код, мои списки просмотра дают кучу пустого пространства после фактического содержимого. Совершенно из-под контроля. Да, я пробовал HasUnevenRows = "true"
<ScrollView>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row ="0" Grid.Column="0" Text="Category: " />
<Label Grid.Row ="1" Grid.Column="0" Text="Meal Time: " />
<Label Grid.Row ="0" Grid.Column="1" Text="{Binding Recipe.Category}" />
<Label Grid.Row ="1" Grid.Column="1" Text="{Binding Recipe.MealTime}" />
</Grid>
<ListView VerticalOptions="Start" Grid.Row="1" HasUnevenRows="False" x:Name="IngredientsListView"
ItemsSource="{Binding Recipe.Ingredients}"
RefreshCommand="{Binding LoadRecipesCommand}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding }"/>
<Label Grid.Row ="0" Grid.Column="1" FontAttributes="Bold" Text="{Binding Count}" />
<Label Grid.Row ="0" Grid.Column="2" FontAttributes="Bold" Text="{Binding Measure}" />
<Label Grid.Row ="0" Grid.Column="3" FontAttributes="Bold" Text="{Binding Name}" />
<Label Grid.Row ="1" Grid.Column="2" Grid.ColumnSpan="2" FontAttributes="Italic" FontSize="Micro" Text="{Binding Note}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView VerticalOptions="Start" Grid.Row="2" HasUnevenRows="False" x:Name="InstructionsListView"
ItemsSource="{Binding Recipe.Instructions}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding .}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ScrollView>