Xamarin, Xamarin.Forms

Fix – BindableProperty.Create Method Deprecated {Xamarin.Forms}


Normalmente todo tiende a cambiar o mejor dicho a evolucionar, puesto que nos encontramos en busca de una “mejora” constante, y si nos enfocamos a un nicho tecnológico como es la programación, podemos saber que los ingenieros están siempre buscando esto.

Xamarin no se queda fuera de esto y es que el código que posiblemente utilizamos hace unos cuantos meses o semanas atrás ya ha sido cambiado, a esto se le conoce como “obsoleto” o que sera depreciado.

En Xamarin.Forms se utilizan métodos genéricos BindableProperty.Create, estos métodos fueron desaprobados por Xamarin debido a problemas de rendimiento, para lo cual debemos reemplazar todo el uso con las alternativas no genéricas.

A continuación les comparto un ejemplo para un Picker:

Antes:

Propiedad

public static readonly new BindableProperty ItemsSourceProperty =
    BindableProperty.Create<BindablePicker, IEnumerable>(o => o.ItemsSource, default(IEnumerable), propertyChanged: OnItemsSourceChanged);

Método

static void OnItemsSourceChanged(BindableObject bindable, IEnumerable oldvalue, IEnumerable newvalue)
    {
      var picker = bindable as BindablePicker;
      picker.Items.Clear();
      if (newvalue != null)
      {
        foreach (var item in newvalue)
        {
          picker.Items.Add(item.ToString());
        }
      }
    }

Despúes

Propiedad

public static readonly new BindableProperty ItemsSourceProperty =
      BindableProperty.Create("ItemsSource", typeof(List<string>), typeof(BindablePicker), null, BindingMode.OneWay, null, propertyChanged: OnItemsSourceChanged);

Método

static void OnItemsSourceChanged(BindableObject bindable, object oldValue, object newValue)
    {
      var picker = bindable as BindablePicker;
      picker.Items.Clear();
      if ((List<string>)newValue != null)
      {
        foreach (var item in (List<string>)newValue)
        {
          picker.Items.Add(item.ToString());
        }
      }
    }

Más información: Xamarin Docs

Anuncios

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s