我在从Odata绑定ListView时遇到问题,当我使用本地Db时,我能够通过get方法将我的ModelView类中的列表返回到我的列表变量中,但是Odata方法是Async,所以我不能返回列表,有些如果我在方法中填充变量,它不起作用,此时我无法找到解决方案,如果有人可以帮助我,我会非常感激,到目前为止这是我的代码:
ViewModel类:
public class Page1ViewModel
{
public string Nombre { set; get; }
public string Direccion { set; get; }
public string Descripcion { set; get; }
public string Logo { set; get; }
public List<Restaurant> RestaurantDb { get; set; }
public async void GetRestaurant()
{
String str = "";
try
{
var x = ODataDynamic.Expression;
var client = new ODataClient("http://192.168.0.9/WSTestDev/WSTestDev.svc/");
var packages = await client.FindEntriesAsync("Restaurant");
foreach (var package in packages)
{
var rt = new Restaurant
{
Nombre = package["Nombre"].ToString(),
Direccion = package["Direccion"].ToString(),
Descripcion = package["Descripcion"].ToString(),
Logo = package["Logo"].ToString()
};
RestaurantDb.Add(rt);
}
}
catch (Exception err)
{
str = err.ToString();
}
}
}
查看课程:
public partial class Page1 : ContentPage
{
public Page1ViewModel vm;
public Page1()
{
vm = new Page1ViewModel();
vm.GetRestaurant();
BindingContext = vm;
InitializeComponent();
}
答案 0 :(得分:0)
而不是List<Restaurant>
,请使用ObservableCollection<Restaurant>
。它的行为与List类似,但会通知UI对其内容的任何更改,以便UI可以更新。
或者,您可以await vm.GetRestaurant()
,但这需要对代码进行更多重组。