【问题标题】:Xamarin API Json List to ListViewXamarin API Json 列表到 ListView
【发布时间】:2020-11-20 21:17:41
【问题描述】:

我有以下代码 这是我的属性:

using System;
using System.Collections.Generic;
using System.Text;

namespace ServLottery.Models
{
    public class PendientesGiro
    {
        public int IDPendGiros { get; set; }
        public string NumFactura { get; set; }
        public double Monto { get; set; }
        public int IDPisteroVenta { get; set; }
        public int IDPisteroCanje { get; set; }
        public string Identification { get; set; }
        public string Nombre { get; set; }
        public string FechaVenta { get; set; }
    }
}

然后是视图模型:

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;

namespace ServLottery.Models
{
    public class PendGirosViewModel
    {
        public IList<PendientesGiro> PendientesLista { get; set; }

        public PendGirosViewModel()
        {
            try
            {
                PendientesLista = new ObservableCollection<PendientesGiro>();
                GetPendGiros();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private async void GetPendGiros()
        {
            try
            {
                RestClient client = new RestClient();
                var pend = await client.Get<Models.PendientesGiro>("https://servicentroapi.azurewebsites.net/api/Giros");
                if (pend != null)
                {
                    PendientesLista = pend;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
    }
}

以及我用来从 API 取回数据的函数

private async Task<List<PendientesGiro>> GetPendientesAsync()
        {
            List<PendientesGiro> PendientesLista = new List<PendientesGiro>();
            HttpClient client = new HttpClient();
            Uri uri = new Uri(string.Format("https://servicentroapi.azurewebsites.net/api/Giros", string.Empty));
            HttpResponseMessage response = await client.GetAsync(uri);
            if (response.IsSuccessStatusCode)
            {
                string content = await response.Content.ReadAsStringAsync();
                PendientesLista = JsonConvert.DeserializeObject<List<PendientesGiro>>(content);
                Console.WriteLine("content :: " + content);
                Console.WriteLine("Data :: " + PendientesLista);
            }
            return PendientesLista;
        }
lv_Pend.ItemsSource = await GetPendientesAsync();

信息到达 ItemsSource 但未显示在 ListView 中,我认为我的问题在于 xaml 代码

<ListView x:Name="lv_Pend"
                      SelectedItem="{Binding PendientesGiro}"
                      ItemsSource="{Binding PendientesGiro}">
                
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <StackLayout Orientation="Horizontal">
                            <Label Text="{Binding Identification}" TextColor="White"/>
                            <Label Text="{Binding Name}" TextColor="White"/>
                        </StackLayout>
                    </DataTemplate>
                </ListView.ItemTemplate>
                
            </ListView>

我希望我的列表显示标识和名称,并且当我选择时能够获取与另一个页面相关的整个日期集。

【问题讨论】:

  • 不是 xaml,更可能是缺少绑定的通知属性

标签: c# api listview xamarin.forms binding


【解决方案1】:

欢迎来到 SO!

从共享的 Xaml 代码中,DataTemplate 中缺少一个 ViewCell 属性。与ListViewCustom Cells 核对,然后您可以进行如下修改:

<ListView x:Name="lv_Pend"
            SelectedItem="{Binding PendientesGiro}"
            ItemsSource="{Binding PendientesGiro}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell> // add ViewCell
                <StackLayout Orientation="Horizontal">
                    <Label Text="{Binding Identification}"
                            TextColor="Black" />
                    <Label Text="{Binding Name}"
                            TextColor="Black" />
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

它会起作用的:

【讨论】:

  • 你总是让我惊奇!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 2021-06-19
  • 1970-01-01
  • 2021-10-26
  • 2014-09-11
  • 2021-10-20
  • 1970-01-01
相关资源
最近更新 更多