У вас есть два варианта:
- Создайте объект
Binding
вручную и присоедините к событиям Format
и Parse
и поменяйте местами значения в каждом.
- Создайте дополнительное свойство в классе, которое просто меняет логику намеченного свойства
Первый вариант более чистый, IMO, поскольку он не заставляет API вашего класса следовать дизайну вашего пользовательского интерфейса, хотя второй вариант (незначительно) проще.
Пример варианта 1
private void SwitchBool(object sender, ConvertEventArgs e)
{
e.Value = !((bool)e.Value);
}
...
Binding bind = new Binding("Checked", this.object, "SomeBool");
bind.Format += SwitchBool;
bind.Parse += SwitchBool;
CheckBox1.DataBindings.Add(bind);
Пример варианта 2
public class SomeClass
{
public bool SomeBool { get; set; }
public bool NotSomeBool
{
get { return !SomeBool; }
set { SomeBool = !value; }
}
}
...
CheckBox1.DataBindings.Add("Checked", this.object, "NotSomeBool");
Опять же, я очень одобряю вариант 1, так как вариант 2 требует, чтобы вы адаптировали свой класс к дизайну вашего интерфейса.