2008-12-05 3 views
1

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

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

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

+0

+1, потому что я googled "C# control enabled data binding", и это было первое, что появилось, и буквально точная ситуация, с которой я столкнулся. – vergenzt 2012-07-23 18:08:59

+0

См. [Привязка usercontrol к противоположному свойству bool] (http://stackoverflow.com/a/19718906/298054). – jweyrich 2015-07-07 18:30:58

ответ

1

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

а) Изменение класса источника также имеют свойство NotBar и привязку к этому

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

2

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

+0

Я думаю, что у Джейка есть общая идея (создание свойства, которое вычисляет то, что вы хотите), но он все еще чувствует себя немного взломанным. – Coderer 2008-12-05 22:27:57

-1

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

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

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

+1

Я понимаю основную концепцию, это просто, что кажется ограниченным. Я надеялся, что у вас будет немного больше гибкости. – Coderer 2008-12-05 22:26:45

Смежные вопросы