Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin选取器在api调用后未更新_Xamarin_Xamarin.forms_Picker - Fatal编程技术网

Xamarin选取器在api调用后未更新

Xamarin选取器在api调用后未更新,xamarin,xamarin.forms,picker,Xamarin,Xamarin.forms,Picker,我有一个xamarin选择器,在从api(从内部视图模型)获取国家后,它应该显示国家列表,但是当我将itemsource设置为列表变量时,选择器不会更新 公共离港(离港查看模型mod) { 初始化组件(); model=mod; GetCountryData(); } 私有异步void GetCountryData() { var res=await model.SetCountries();//加载api数据 CountryPikcer.IsEnabled=true; CountryPikce

我有一个xamarin选择器,在从api(从内部视图模型)获取国家后,它应该显示国家列表,但是当我将itemsource设置为列表变量时,选择器不会更新

公共离港(离港查看模型mod)
{
初始化组件();
model=mod;
GetCountryData();
}
私有异步void GetCountryData()
{
var res=await model.SetCountries();//加载api数据
CountryPikcer.IsEnabled=true;
CountryPikcer.ItemDisplayBinding=新绑定(“名称”);//将Name属性设置为显示属性
CountryPikcer.ItemsSource=model.FilterCountries(“”;//获取加载列表
}
视图模型:

私人名单国家;
公共国际国家ID
{
获取{return countryId;}
set{SetProperty(ref countryId,value);}
}
公共部门可视模型()
{
api=新的ApiCaller();
国家=新名单();
}
公共异步任务SetCountries()
{
国家=等待api.GetAll(“国家”);
返回true;
}
公共列表筛选器国家(字符串文本)
{
如果(文本==“”)
返回国;
List filtered=countries.Where(x=>x.Name.Contains(text)).ToList();
返回过滤;
}

在调试器内部,ItemsSource属性正在填充,但选择器不是

,我认为您的问题在viewmodel中。您使用的是异步调用,这意味着您的所有控件都是在异步调用的数据可用之前呈现的。在这种情况下,viewmodel应该实现INotifyPropertyChanged。例如:

public List<Country> Countries
{
    {
      set { countries = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Countries))); }
      get { return countries; }    
    }
}
公开列表国家
{
{
设置{countries=value;PropertyChanged?.Invoke(这是新的propertychangedventargs(nameof(countries));}
获取{返回国家;}
}
}

确保控件数据正确刷新。

发布您的viewmodel更重要的是如何处理项源。@Adlorem添加了viewmodel您正在用作项源的
FilterCountries
方法在哪里?@Jason它在viewmodel中只返回List属性,我将添加它。您确定该方法正确吗返回数据?
Country
是否包含公共财产“名称”?