绑定Odata Xamarin Xaml

时间:2015-07-15 17:10:54

标签: xaml xamarin odata

我在从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();

    }

1 个答案:

答案 0 :(得分:0)

而不是List<Restaurant>,请使用ObservableCollection<Restaurant>。它的行为与List类似,但会通知UI对其内容的任何更改,以便UI可以更新。

或者,您可以await vm.GetRestaurant(),但这需要对代码进行更多重组。