Pretty straightforward: I\'m looking to do the same as this but in winforms. Everything that google seems to pull up is wpf specific (ie. I don\'t want to reference presentation
Based on Adam's answer I wrote a small helper class:
class NegateBinding
{
string propertyName;
object dataSource;
string dataMember;
public NegateBinding(string propertyName, object dataSource, string dataMember)
{
this.propertyName = propertyName;
this.dataSource = dataSource;
this.dataMember = dataMember;
}
public static implicit operator Binding(NegateBinding eb)
{
var binding = new Binding(eb.propertyName, eb.dataSource, eb.dataMember, false, DataSourceUpdateMode.OnPropertyChanged);
binding.Parse += new ConvertEventHandler(negate);
binding.Format += new ConvertEventHandler(negate);
return binding;
}
static void negate(object sender, ConvertEventArgs e)
{
e.Value = !((bool)e.Value);
}
}
Now you can use it like this:
label1.DataBindings.Add(new NegateBinding("Visible", otherObject, "HasData"));