Как привязать данные к Control.Enabled! (Поле)? - PullRequest
1 голос
/ 06 декабря 2008

У меня есть (varchar) поле Foo, которое можно указать, только если (бит) Bar равен , а не true. Я хотел бы, чтобы текстовое поле, в котором отображается Foo, было бы отключено , когда Bar истинно - по сути, FooBox.Enabled = !isBar Я пытаюсь сделать что-то вроде

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

но, конечно, взрыв там вызывает исключение. Я также пробовал конструкции типа "isBar! = True" или "isBar <> true", но ни одна из них не работает. Я лаю не на том дереве?

Ответы [ 3 ]

2 голосов
/ 06 декабря 2008

Насколько я могу судить, Databind использует отражение, чтобы найти члена, переданного в качестве 3-го строкового аргумента. Вы не можете передать туда выражение, только имя члена.

1 голос
/ 06 декабря 2008

Я пытался сделать что-то подобное некоторое время назад, и лучшее, что я мог придумать, было либо

a) Изменение исходного класса также на свойство NotBar и привязку к нему

b) Создайте тупой класс-оболочку вокруг источника, у которого есть свойство NotBar, и привяжите его к нему.

0 голосов
/ 06 декабря 2008

, если isBar является свойством исходного класса (в противном случае вам нужно свойство класса для связывания), это должно работать:

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

но помните, что source.isBar должен существовать и быть логическим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...