c# .net xamarin xamarin.ios xamarin.forms

c# - Cómo usar BindableProperty.Create en Xamarin.Forms?



.net xamarin.ios (2)

En xaml en Xamarin.Forms, tengo un control personalizado, quiero agregar propiedad de tipo int . Creo que tengo que usar las propiedades vinculables, por lo que más tarde puedo vincular una propiedad de ViewModel.

Encontré este tema, pero no estoy seguro de cómo usarlo. Hay:

BindableProperty.Create(nameof(ItemsSource), typeof(IList), typeof(BindablePicker), null, propertyChanged: OnItemsSourcePropertyChanged);

¿Qué es "BindablePicker"? ¿Es la vista donde se declara la propiedad?

Aquí está mi intento:

public int WedgeRating { get { return (int)GetValue(WedgeRatingProperty); } set { try { SetValue(WedgeRatingProperty, value); } catch (ArgumentException ex) { // We need to do something here to let the user know // the value passed in failed databinding validation } } } public static readonly BindableProperty WedgeRatingProperty = BindableProperty.Create(nameof(WedgeRating), typeof(int), typeof(GameCocosSharpView), null, propertyChanged: OnItemsSourcePropertyChanged); private static void OnItemsSourcePropertyChanged(BindableObject bindable, object oldValue, object newValue) { }

Ni siquiera lo usé en xaml, y ya no funciona. Sin excepción particular. Solo la página donde se inicializa el control personalizado no aparece. Cuando comento la línea que pegué aquí, funciona.


Aquí está el ejemplo de propiedad aglutinante

public class GameCocosSharpView : View { public int WedgeRating { get { return (int)GetValue(WedgeRatingProperty); } set { SetValue(WedgeRatingProperty, value); } } public static void WedgeRatingChanged(BindableObject bindable, object oldValue, object newValue) { } public static readonly BindableProperty WedgeRatingProperty = BindableProperty.Create("WedgeRating", typeof(int), typeof(GameCocosSharpView), 1, BindingMode.Default, null, WedgeRatingChanged); }


Su código es bueno, simplemente cambie su valor predeterminado de null a 0 o default(int) . Lo tiene como null pero una propiedad int nunca podría ser nula. Esta fue la razón del "crash".

public static readonly BindableProperty WedgeRatingProperty = BindableProperty.Create (nameof (WedgeRating), typeof (int), typeof (GameCocosSharpView), default(int), propertyChanged: OnItemsSourcePropertyChanged);

¡Espero que esto ayude!