【发布时间】:2020-05-23 17:03:42
【问题描述】:
我有一个 xamarin 选择器,它应该在从 api(从视图模型内部)获取国家/地区列表后显示国家列表,但是当我将 itemsource 设置为 List 变量时,选择器不会更新。
public Departures(DeparturesViewModel mod)
{
InitializeComponent();
model = mod;
GetCountryData();
}
private async void GetCountryData()
{
var res= await model.SetCountries();// load api data
CountryPikcer.IsEnabled = true;
CountryPikcer.ItemDisplayBinding = new Binding("Name");//Set the name property as the display property
CountryPikcer.ItemsSource = model.FilterCountries("");//get loaded List<Country>
}
视图模型:
private List<Country> countries;
public int CountryId
{
get { return countryId; }
set { SetProperty(ref countryId, value); }
}
public DeparturesViewModel()
{
api = new ApiCaller();
countries = new List<Country>();
}
public async Task<bool> SetCountries()
{
countries = await api.GetAll<List<Country>>("Countries");
return true;
}
public List<Country> FilterCountries (string text)
{
if (text == "")
return countries;
List<Country> filtered = countries.Where(x => x.Name.Contains(text)).ToList();
return filtered;
}
【问题讨论】:
-
发布您的视图模型,更重要的是如何处理项目来源。
-
@Adlorem 添加了视图模型
-
您用作 ItemSource 的
FilterCountries方法在哪里? -
@Jason 它在视图模型中它只是返回 List
属性我无论如何都会添加它 -
您确定该方法正在返回数据吗?
Country是否包含公共属性“名称”?
标签: xamarin xamarin.forms picker