【问题标题】:Picker List in Xamarin FormsXamarin 表单中的选取器列表
【发布时间】:2020-03-08 08:37:42
【问题描述】:

我正在创建一个应用程序,该应用程序应该从与 sql 服务器连接的 Rest Api 导入一个 lis

在邮递员中运行完美

但在 Xamarin Evrithing 中是空白

这是我的代码

这是仓库

public Alamacenes[] getAlmacenes()
        {
            try
            {
                Alamacenes[] almacenes;
                var URLWebAPI = "https://www.avila.somee.com/ApiAlexa/api/Almacenes";
                using (var Client = new System.Net.Http.HttpClient())
                {
                    var JSON = Client.GetStringAsync(URLWebAPI);
                    almacenes = JsonConvert.DeserializeObject<Alamacenes[]>(JSON.Result);
                }

                return almacenes;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

这是我的代码隐藏

 protected async void OnAppearing()
        {
            Repositorio repo = new Repositorio();
            Alamacenes[] listalmacenes = repo.getAlmacenes();
            foreach (var item in listalmacenes)
            {
                base.OnAppearing();

                Almacen.Items.Add(item.CodigoAlmacen.ToString());
                Almacen.Items.IndexOf(item.Almacen.ToString());
            }
        }

这张图片就是结果

enter image description here

我想知道我的代码是否有问题

【问题讨论】:

  • 您的服务调用是否返回 json?您的 json 是否被正确反序列化?你为什么在循环中调用base.OnAppearing?你的选择器的定义是什么样的?

标签: c# asp.net-mvc xaml xamarin.forms postman


【解决方案1】:

我认为您在为空时将列表设置为选择器,您应该等待响应,然后将项目源设置为选择器。看看这个快速示例。

//XAML Code
    <Picker x:Name="almacenPicker" ItemDisplayBinding="{Binding Almacen}" />

//Code behind code
    protected override async void OnAppearing()
    {
        base.OnAppearing();
        var almacenList = await GetAlamacenes();
        almacenPicker.ItemsSource = almacenList;
    }

    public Task<List<Almacene>> GetAlamacenes()
    {
        return GetAsync<List<Almacene>>("https://www.avila.somee.com/ApiAlexa/api/Almacenes");
    }

    public async Task<TResult> GetAsync<TResult>(string uri)
    {
        var httpClient = new HttpClient();

        HttpResponseMessage response = await httpClient.GetAsync(uri);

        var content = await response.Content.ReadAsStringAsync();

        return await Task.Run(() => JsonConvert.DeserializeObject<TResult>(content));
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多