locked
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();
            }
    
            #endregion
        }
    
    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