Элементы ListView, загруженные не полностью с помощью xamarin.forms - PullRequest
0 голосов
/ 20 октября 2019

Контроллер My List View не загружает все элементы, в данном случае он загружает только 1 элемент, в других случаях он загружается как 4, но другие не загружаются

Поскольку у меня есть тест, где проблемаЯ знаю, что проблема связана с контроллером фреймов. Благодаря фрейму большинство моих элементов в представлении списка не загружается

<ListView.ItemTemplate>
  <DataTemplate>
    <ViewCell>
      <Frame
          HeightRequest="100"
          Margin="10"
          HasShadow="True"
          CornerRadius="25"
          BackgroundColor="White">
        <Grid
            Padding="5">
          <Grid.RowDefinitions>
            <RowDefinition Height="2*"/>
            <RowDefinition Height="*"/>
          </Grid.RowDefinitions>
          <Label
              Grid.Column="0"
              Grid.Row="0"
              Text="{Binding Name}"
              FontAttributes="Bold"
              FontSize="Large"
              HorizontalOptions="Start"
              VerticalOptions="Start">
          </Label>
          <Image
              HeightRequest="50"
              Grid.Row="0"
              Grid.Column="1"
              Source="{Binding TaskIcon}"
              HorizontalOptions="End"
              VerticalOptions="Start">
          </Image>
          <Label
              Grid.Row="1"
              Grid.Column="0"
              Text="{Binding Description}"
              FontAttributes="Bold"
              FontSize="Medium"
              HorizontalOptions="Start"
              VerticalOptions="End">
          </Label>
          <Button
              Grid.Row="1"
              Grid.Column="1"
              Text="{Binding IsDone}"
              TextColor="White"
              FontAttributes="Bold"
              VerticalOptions="CenterAndExpand"
              HorizontalOptions="Center"
              FontSize="Small"
              CornerRadius="100"
              BackgroundColor="LawnGreen">
          </Button>
        </Grid>
      </Frame>
    </ViewCell>
  </DataTemplate>
</ListView.ItemTemplate>

Результаты, о которых я упоминал, являются неполной загрузкой моих элементов, так какНа следующем изображении показано:

Screenshot of the problem

[Отредактировано] Я отредактировал свой код следующим образом, и ошибка все та же

<ListView
               SeparatorVisibility="None"
                    IsGroupingEnabled="True"
                    ItemsSource="{Binding TasksCollection}"
                    GroupDisplayBinding="{Binding Key}"
                    HasUnevenRows="True">
                    <ListView.GroupHeaderTemplate>
                        <DataTemplate>
                            <TextCell
                                Text="{Binding Key}"
                                TextColor="White"/>
                        </DataTemplate>
                    </ListView.GroupHeaderTemplate>
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <Frame
                                    HeightRequest="150"
                                    Margin="10"
                                    HasShadow="True"
                                    CornerRadius="25"
                                    BackgroundColor="White">
                                    <Grid
                                        Padding="5">
                                    <Grid.GestureRecognizers>
                                        <TapGestureRecognizer Command="{Binding GridExpandCommand}"/>
                                    </Grid.GestureRecognizers>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="2*"/>
                                        <RowDefinition Height="*"/>
                                    </Grid.RowDefinitions>
                                        <Label
                                            Grid.Column="0"
                                            Grid.Row="0"
                                            Text="{Binding Name}"
                                            FontAttributes="Bold"
                                            FontSize="Small"
                                            HorizontalOptions="Start"
                                            VerticalOptions="Start">
                                        </Label>
                                        <Image
                                            HeightRequest="25"
                                            Grid.Row="0"
                                            Grid.Column="1"
                                            Source="{Binding TaskIcon}"
                                            HorizontalOptions="End"
                                            VerticalOptions="Start">
                                        </Image>
                                        <Label
                                            Grid.Row="1"
                                            Grid.Column="0"
                                            Text="{Binding Description}"
                                            FontAttributes="Bold"
                                            FontSize="Small"
                                            HorizontalOptions="Start"
                                            VerticalOptions="End">
                                        </Label>
                                        <Button
                                            Grid.Row="1"
                                            Grid.Column="1"
                                            Text="{Binding IsDone}"
                                            TextColor="White"
                                            FontAttributes="Bold"
                                            VerticalOptions="CenterAndExpand"
                                            HorizontalOptions="Center"
                                            FontSize="Small"
                                            CornerRadius="100"
                                            BackgroundColor="LawnGreen">
                                        </Button>
                                    </Grid>
                                </Frame>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Я установил ListView HasUnevenRows = "True" , и он работает нормально и не имеет никаких проблем.

<ListView HasUnevenRows="True" ItemsSource="{Binding models}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Frame
                            Margin="10"
                            BackgroundColor="White"
                            CornerRadius="25"
                            HasShadow="True"
                            HeightRequest="120">
                            <Grid Padding="5">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="2*" />
                                    <RowDefinition Height="*" />
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>
                                <Label
                                    Grid.Row="0"
                                    Grid.Column="0"
                                    FontAttributes="Bold"
                                    FontSize="Large"
                                    Text="{Binding Name}" />
                                <Image
                                    Grid.Row="0"
                                    Grid.Column="1"
                                    Source="{Binding TaskIcon}" />
                                <Label
                                    Grid.Row="1"
                                    Grid.Column="0"
                                    FontAttributes="Bold"
                                    FontSize="Medium"
                                    Text="{Binding Description}" />
                                <Button
                                    Grid.Row="1"
                                    Grid.Column="1"
                                    BackgroundColor="LawnGreen"
                                    CornerRadius="100"
                                    FontAttributes="Bold"
                                    FontSize="Small"
                                    Text="{Binding IsDone}"
                                    TextColor="White" />
                            </Grid>
                        </Frame>
                    </ViewCell>
                </DataTemplate>

            </ListView.ItemTemplate>
        </ListView>
0 голосов
/ 20 октября 2019

Это может произойти только в том случае, если ваш макет не умещается (кроме тривиальной проблемы, когда вы отправляете пустые данные, которые вы, вероятно, увидите), вы пытаетесь разместить слишком большие элементы в слишком малом пространстве. Вы должны установить HeightRequest и WidthRequest изображений, и, возможно, вам также нужно установить LineBreakMode для меток.

...