How to databind with a converter in code? RRS feed

  • Question

  • User67129 posted

    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();
    Monday, August 18, 2014 2:39 PM

All replies

  • User112 posted

    There is an overload of SetBinding...

    Monday, August 18, 2014 3:03 PM
  • User67129 posted

    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));

    Monday, August 18, 2014 3:08 PM