Каков приемлемый способ отображения двух списков переменного размера на одной странице в формах Xamarin? - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу поддерживать полностью декларативный интерфейс с привязкой данных 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...