我如何将Control.Enabled数据绑定到!(字段)?

时间:2008-12-05 21:32:09

标签: c# winforms data-binding

我有一个(varchar)字段Foo,只有在(位)Bar 为真时才能指定。当Bar为true时,我希望显示Foo的文本框禁用 - 基本上是FooBox.Enabled = !isBar。我正在尝试做类似

的事情
FooBox.DataBindings.Add(new Binding("Enabled", source, "!isBar"));

但当然那里的爆炸引发了异常。我也试过像“isBar!= true”或“isBar<> true”这样的结构,但都没有用。我在这里咆哮错误的树吗?

3 个答案:

答案 0 :(得分:2)

据我所知,Databind使用反射来查找作为第3个字符串参数传递的成员。您不能在那里传递表达式,只能传递成员名称。

答案 1 :(得分:1)

我前一段时间尝试做过这样的事情,我能想到的最好的是

a)将源类更改为也具有NotBar属性并绑定到该

b)围绕具有NotBar属性并绑定到该源的源创建一个哑包装类。

答案 2 :(得分:-1)

如果isBar是源类的属性(否则你需要一个类的属性来进行绑定)这应该有效:

FooBox.DataBindings.Add("Enabled", source, "isBar");

但请记住source.isBar必须存在并且是布尔值。