Список Xamarin не отображает полные элементы, когда он находится в просмотре прокрутки - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть макет ниже xaml, как показано ниже:

<ContentPage.Content>
<ScrollView>
    <StackLayout Padding="3">
        <Label x:Name="Totalhours" Text="{Binding THours}" TextColor="Black" HorizontalOptions="CenterAndExpand" VerticalOptions="Center" FontSize="Large" />
        <microcharts:ChartView Margin="0,10,0,4" x:Name="chartView" HeightRequest="200" Chart="{Binding Chart}"  />
        <ListView x:Name="lvActivities" ItemsSource="{Binding LaborMiscTimeList}" ItemTapped="lvActivities_ItemTapped" CachingStrategy="RecycleElement" IsGroupingEnabled="True" SeparatorVisibility="None" HasUnevenRows="True">
            <ListView.GroupHeaderTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid Margin="8,8,2,8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"></ColumnDefinition>
                                <ColumnDefinition Width="80"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <Label Text="{Binding Key}" FontSize="Large" TextColor="Black" Grid.Column="0"/>
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.GroupHeaderTemplate>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <cardView:CardView
            BackgroundColor="White"
            CardViewHasShadow="True"
            HeightRequest="145">
                            <cardView:CardView.CardViewContent>
                                <Grid Padding="1">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="*"></RowDefinition>
                                        <RowDefinition Height="*"></RowDefinition>
                                        <RowDefinition Height="Auto"></RowDefinition>
                                        <RowDefinition Height="Auto"></RowDefinition>
                                    </Grid.RowDefinitions>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="30"></ColumnDefinition>
                                        <ColumnDefinition Width="2*"></ColumnDefinition>
                                        <ColumnDefinition Width="5*"></ColumnDefinition>
                                    </Grid.ColumnDefinitions>
                                    <Image Source="{Binding WorkCodeImage}" Grid.Row ="0" Grid.Column="0" HorizontalOptions="FillAndExpand"  Aspect="AspectFit"/>
                                    <Label  Text="{Binding WorkDescription}" Grid.Row="0" Grid.Column="1" FontSize="20" VerticalOptions="Center"></Label>
                                    <Label Text="{Binding StartEndTime}" Grid.Row="1" Grid.Column="1"  TextColor="Black" FontSize="15" VerticalOptions="StartAndExpand"></Label>
                                    <Label Text="{Binding TotalHours}" Margin="10,0,0,0" Grid.Row="0"  Grid.Column="2" Grid.RowSpan="2" HorizontalOptions="EndAndExpand"   TextColor="Black" VerticalOptions="Center"></Label>
                                    <Label Text ="Notes" Grid.Row="2" Grid.Column="1" VerticalOptions="Center"></Label>
                                    <local:EditorXF Text="{Binding Comments}" Focused="DriverNotes_Focused" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" x:Name="DriverNotes" 
                         FontSize="Small" TextColor="Black" VerticalOptions="FillAndExpand">
                                    </local:EditorXF>
                                </Grid>
                            </cardView:CardView.CardViewContent>
                        </cardView:CardView>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.Footer>
                <Label/>
            </ListView.Footer>
        </ListView>
    </StackLayout>
</ScrollView>
</ContentPage.Content>

Как мы видим, расположение стека, которое содержит initview списка, находится внутри представления прокрутки.Когда пользователь прокручивает его, я хочу прокрутить всю страницу, включая просмотр списка.С помощью этого кода я могу добиться этого, но последние 4-5 элементов списка не отображаются (обрезка).

Есть идеи?

1 Ответ

0 голосов
/ 19 февраля 2019

Будет плохой дизайн, если вы поместите просмотр списка в scrollView.

Решение:

Сначала удалите scollView.

Во-вторых, добавьте свои метки и диаграммы в ListView.Header

<ContentPage.Content>

        <StackLayout Padding="3">

            <ListView x:Name="lvActivities" ItemsSource="{Binding LaborMiscTimeList}" ItemTapped="lvActivities_ItemTapped" CachingStrategy="RecycleElement" IsGroupingEnabled="True" SeparatorVisibility="None" HasUnevenRows="True">

                <!--Add you label and charts here-->
                <ListView.Header>
                    <StackLayout>

                        <Label x:Name="Totalhours" Text="THours" TextColor="Black" HorizontalOptions="CenterAndExpand" VerticalOptions="Center" FontSize="Large" />
                        <microcharts:ChartView Margin="0,10,0,4" x:Name="chartView" HeightRequest="200" Chart="{Binding Chart}"  />
                    </StackLayout>

                </ListView.Header>

                <ListView.GroupHeaderTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <Grid Margin="8,8,2,8">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"></ColumnDefinition>
                                    <ColumnDefinition Width="80"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <Label Text="{Binding Key}" FontSize="Large" TextColor="Black" Grid.Column="0"/>
                            </Grid>
                        </ViewCell>
                    </DataTemplate>
                </ListView.GroupHeaderTemplate>
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <cardView:CardView
        BackgroundColor="White"
        CardViewHasShadow="True"
        HeightRequest="145">
                                <cardView:CardView.CardViewContent>
                                    <Grid Padding="1">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="*"></RowDefinition>
                                            <RowDefinition Height="*"></RowDefinition>
                                            <RowDefinition Height="Auto"></RowDefinition>
                                            <RowDefinition Height="Auto"></RowDefinition>
                                        </Grid.RowDefinitions>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="30"></ColumnDefinition>
                                            <ColumnDefinition Width="2*"></ColumnDefinition>
                                            <ColumnDefinition Width="5*"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <Image Source="{Binding WorkCodeImage}" Grid.Row ="0" Grid.Column="0" HorizontalOptions="FillAndExpand"  Aspect="AspectFit"/>
                                        <Label  Text="{Binding WorkDescription}" Grid.Row="0" Grid.Column="1" FontSize="20" VerticalOptions="Center"></Label>
                                        <Label Text="{Binding StartEndTime}" Grid.Row="1" Grid.Column="1"  TextColor="Black" FontSize="15" VerticalOptions="StartAndExpand"></Label>
                                        <Label Text="{Binding TotalHours}" Margin="10,0,0,0" Grid.Row="0"  Grid.Column="2" Grid.RowSpan="2" HorizontalOptions="EndAndExpand"   TextColor="Black" VerticalOptions="Center"></Label>
                                        <Label Text ="Notes" Grid.Row="2" Grid.Column="1" VerticalOptions="Center"></Label>
                                        <local:EditorXF Text="{Binding Comments}" Focused="DriverNotes_Focused" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" x:Name="DriverNotes" 
                     FontSize="Small" TextColor="Black" VerticalOptions="FillAndExpand">
                                        </local:EditorXF>
                                    </Grid>
                                </cardView:CardView.CardViewContent>
                            </cardView:CardView>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
                <ListView.Footer>
                    <Label/>
                </ListView.Footer>
            </ListView>
        </StackLayout>

</ContentPage.Content>
...