在列表视图 xamarin 表单中显示多个项目

Show multiple items in listview xamarin forms

我是 C# 和 XAML 的新手,我正在开发一款允许您列出所有正在创建的旅行的旅行应用程序。

我在使用 ListView 显示所有行程时遇到问题。

我的 problem:It 只显示了一次行程,而不是所有已注册的行程 我是 C# 和 XAML 的新手,我正在开发一款允许您列出所有正在创建的旅行的旅行应用程序。

我在使用 ListView 显示所有行程时遇到问题。

我的问题:它只显示了一次行程,而不是所有已注册的行程

ViewModel

public VerViajeViewModel()
    {

        string response = "";

        try
        {

            Task.Run(async () => {
            response= await apiRest.ConsultaViaje();

            }).Wait();

            List<Viaje> consulta = JsonConvert.DeserializeObject<List<Viaje>>(response);
            SfCardView cardView;

            foreach (Viaje consultas in consulta)
            {
                Items = new Viaje[]
                {
                 new Viaje(){Destino = consultas.Destino, Url= consultas.Url, FechaSalida= consultas.FechaSalida, FechaVuelta= consultas.FechaVuelta, Disponibilidad= consultas.Disponibilidad},

                };
               

            }

        }
        catch(Exception ex)
        {
            Console.WriteLine(ex);
        }
    }

}

Xaml

<ContentPage.BindingContext>
    <ViewModels:VerViajeViewModel></ViewModels:VerViajeViewModel>
</ContentPage.BindingContext>

<StackLayout VerticalOptions="FillAndExpand" >
    <Label Text="Mis Viajes" FontSize="Title" HorizontalOptions="CenterAndExpand"></Label>
    <ListView x:Name="EventListView"
              Margin="0,8,0,0"
              HasUnevenRows="True"
              SeparatorVisibility="None"
              ItemsSource="{Binding Items}">
        <ListView.ItemTemplate>
            <DataTemplate  >
                <ViewCell>
                    <cards:SfCardView  BackgroundColor="#17669f"  VerticalOptions="FillAndExpand" >
                        <cards:SfCardView.GestureRecognizers>
                            <TapGestureRecognizer
                                Tapped="VerViaje"/>
                        </cards:SfCardView.GestureRecognizers>
                        <Grid  VerticalOptions="FillAndExpand" >
                            <StackLayout Orientation="Horizontal" >
                                <Label 
                                       FontAttributes="Italic"
                                       FontSize="27"
                                       MaxLines="1"
                                       HorizontalOptions="CenterAndExpand"
                                       Text="Viajes Divertidos"
                                       TextColor="#e0eeeb"
                                        />
                                <Image
                                   Source="{Binding Url}"
                                    HeightRequest="90" WidthRequest="90"
                                   
                                     />
                            </StackLayout>
                            <StackLayout HorizontalOptions="Start" Padding="25,40,100,20">
                                <Label 
                                       FontAttributes="Italic"
                                       FontSize="24"
                                       HorizontalOptions="CenterAndExpand"
                                       Text="Viaja a:"
                                       TextColor="#e0eeeb"
                                        />
                            </StackLayout>
                            <StackLayout HorizontalOptions="CenterAndExpand" Padding="25,60,100,20">
                                <Label 
                                       FontAttributes="Italic"
                                       FontSize="30"
                                       HorizontalOptions="Center"
                                       Text="{Binding Destino}"
                                       TextColor="#50d6a3"
                                        />
                            </StackLayout>
                            <StackLayout HorizontalOptions="StartAndExpand" Padding="25,110,100,20">
                                <Label 
                                       FontAttributes="Italic"
                                       FontSize="15"
                                       HorizontalOptions="Start"
                                       Text="Fecha Salida:"
                                       TextColor="#e0eeeb"
                                        />
                            </StackLayout>
                            <StackLayout HorizontalOptions="CenterAndExpand" Padding="85,110,100,20">
                                <Label 
                                       FontAttributes="Italic"
                                       FontSize="15"
                                       HorizontalOptions="Center"
                                       Text="{Binding FechaSalida}"
                                       TextColor="#e0eeeb"
                                        />
                            </StackLayout>
                            <StackLayout HorizontalOptions="StartAndExpand" Padding="25,130,100,20">
                                <Label 
                                       FontAttributes="Italic"
                                       FontSize="15"
                                       HorizontalOptions="Start"
                                       Text="Fecha Regreso:"
                                       TextColor="#e0eeeb"
                                        />
                            </StackLayout>
                            <StackLayout HorizontalOptions="CenterAndExpand" Padding="110,130,100,20">
                                <Label 
                                       FontAttributes="Italic"
                                       FontSize="15"
                                       HorizontalOptions="Center"
                                       Text="{Binding FechaVuelta}"
                                       TextColor="#e0eeeb"
                                        />
                            </StackLayout>
                            <StackLayout HorizontalOptions="StartAndExpand" Padding="25,150,100,20">
                                <Label 
                                       FontAttributes="Italic"
                                       FontSize="15"
                                       HorizontalOptions="Start"
                                       Text="Disponibilidad:"
                                       TextColor="#57e7a6"
                                        />
                            </StackLayout>

                            <StackLayout HorizontalOptions="CenterAndExpand" Padding="40,150,100,20">
                                <Label 
                                       FontAttributes="Italic"
                                       FontSize="15"
                                       HorizontalOptions="Start"
                                       Text="{Binding Disponibilidad}"
                                       TextColor="#57e7a6"
                                        />
                            </StackLayout>
                        </Grid>

                    </cards:SfCardView>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackLayout>

Result

您似乎正在使用 Viaje 个数组。

相反,您应该使用 ObservableCollectionObservableCollection 将允许 ListView 组件在添加更多项目时自动更新 UI。

此外,您似乎在此处的每次循环中都覆盖了绑定数组 Items

foreach (Viaje consultas in consulta)
{
    Items = new Viaje[]
    {
        new Viaje(){Destino = consultas.Destino, Url= consultas.Url, FechaSalida= consultas.FechaSalida, FechaVuelta= consultas.FechaVuelta, Disponibilidad= consultas.Disponibilidad},

    };
}

考虑将 Items 声明移到 for 循环之外:

Items = new ObservableCollection<Viaje>();
foreach (Viaje consultas in consulta)
{
    Items.Add(consultas);
}