У меня возникли проблемы с привязкой ListView из Odata, когда я работал с локальным Db, я смог выполнить привязку данных, возвращая список в моем классе ModelView в мою переменную списка через метод get, но с Odata метод Async, поэтому я не могу вернуть список, а некоторые, как если бы я заполнил переменную в методе, она не работает, и в этот момент я не могу найти решение, если кто-то может мне помочь, я буду очень признателен, вот мой код до сих пор:Binding Odata Xamarin Xaml
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();
}
Что мне нужно, чтобы получить «ожидание vm.GetRestaurant()»? потому что я просто использую некоторые точки останова в классе представления, и он выполняет все инструкции, но хотя метод «GetRestaurant» выше «привязки» и «инициализации», метод запускается после них, и я предполагаю, что это Проблема (?) – elunap
Вы не можете вызвать метод async из конструктора, и вы можете вернуть void из метода async. Вам нужно будет изменить свой код, чтобы исправить обе эти вещи. Или просто измените список на ObservableCollection – Jason