Xamarin 选择器未显示列表中的日期
Posted
技术标签:
【中文标题】Xamarin 选择器未显示列表中的日期【英文标题】:Xamarin picker not showing the date from the list 【发布时间】:2020-07-30 04:01:12 【问题描述】:我有以下代码:
<ContentPage.BindingContext>
<local:PisterosViewModel/>
</ContentPage.BindingContext>
<Picker x:Name="pck_Pisteros"
ItemDisplayBinding="Binding PisteroN"
ItemsSource="Binding PisterosLista"
SelectedItem="Binding PisterosLista"
Title="Seleccione el usuario..."/>
然后是我的模型:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics.Contracts;
using System.Text;
namespace ServLottery.Models
public class Pisteros
public string PisteroID get; set;
public string PisteroN get; set;
和视图模型:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
namespace ServLottery.Models
public class PisterosViewModel
public IList<Pisteros> PisterosLista get; set;
public PisterosViewModel()
try
PisterosLista = new ObservableCollection<Pisteros>();
GetPisteros();
catch (Exception ex)
throw ex;
private async void GetPisteros()
try
RestClient client = new RestClient();
var pist = await client.Get<Models.Pisteros>("https://servicentroapi.azurewebsites.net/api/Pisteros");
if (pist != null)
PisterosLista = pist;
catch (Exception ex)
throw ex;
我在 var pist 中设置了一个断点,它确实有值,然后 Pisteros 列表似乎也得到了值,这是在页面加载时执行的,所以我不明白是什么问题,但选择器从来没有显示选项。
【问题讨论】:
【参考方案1】:欢迎来到 SO !
Xaml 中的BindingContext
似乎无法处理动态数据,例如来自 Web 服务器的 API 数据。
在 ContentPage 中有一个动态绑定ItemSource
的解决方法,也可以参考this officail sample。
因此,在 Page.Xaml.cs 中添加代码如下:
protected override async void OnAppearing()
pck_Pisteros.ItemsSource = await GetTasksAsync();
base.OnAppearing();
private async Task<List<Pisteros>> GetTasksAsync()
List<Pisteros> PisterosLista = new List<Pisteros>();
HttpClient client = new HttpClient();
Uri uri = new Uri(string.Format("https://servicentroapi.azurewebsites.net/api/Pisteros", string.Empty));
HttpResponseMessage response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
string content = await response.Content.ReadAsStringAsync();
PisterosLista = JsonConvert.DeserializeObject<List<Pisteros>>(content);
Console.WriteLine("content :: " + content);
Console.WriteLine("Data :: " + PisterosLista);
return PisterosLista;
现在它会显示:
【讨论】:
谢谢小辈,这太棒了。它对 ListView 是否同样有效? @EstefaniaHernandez 是的,它也适用于ListView
。
我创建了这个***.com/questions/63184834/…也许你可以帮我检查一下
@EstefaniaHernandez Okey,我会检查的。
再次嗨 :-( 另一个相关问题***.com/questions/63201109/…以上是关于Xamarin 选择器未显示列表中的日期的主要内容,如果未能解决你的问题,请参考以下文章