How to databind with a converter in code?

JKayJKay USMember ✭✭✭
edited August 2014 in Xamarin.Forms

So far I have:

            Label notValidLabel = new Label()
            {
                Text = "*",
                TextColor = Color.Red,
                Font = Font.SystemFontOfSize(20,FontAttributes.Bold)
            };
            notValidLabel.SetBinding(Label.IsVisibleProperty, new Binding("IsValid"));

And I would like to add an InverseBooleanConverter to the value of IsValid. But I am not sure How to do this?

My converter looks like this:

    public class InverseBooleanConverter : IValueConverter
    {
        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter,
            System.Globalization.CultureInfo culture)
        {
            if (targetType != typeof(bool))
                throw new InvalidOperationException("The target must be a boolean");

            return !(bool)value;
        }

        public object ConvertBack(object value, Type targetType, object parameter,
            System.Globalization.CultureInfo culture)
        {
            throw new NotSupportedException();
        }

        #endregion
    }

Posts

  • MihaMarkicMihaMarkic SI ✭✭✭✭

    There is an overload of SetBinding...

  • JKayJKay USMember ✭✭✭
    edited August 2014

    Ok. So I figured it out. My initial attempt to use the overload was:

    notValidLabel.SetBinding(Label.IsVisibleProperty, new Binding("IsValid", null, new InverseBooleanConverter(), null, null));
    

    For anyone looking for more information on how to do this the correct method was:

    notValidLabel.SetBinding(Label.IsVisibleProperty, new Binding("IsValid", BindingMode.Default, new InverseBooleanConverter(), null, null));

Sign In or Register to comment.