Как использовать привязку данных с переключателями Windows Forms?

У меня есть двоичное поле в моей базе данных, которое трудно описать в пользовательском интерфейсе с помощью одного флажка типа «Является ли XXXX?». Я бы предпочел использовать пару радиокнопок (например, «Сделай это способом Foo» и «Сделай это способом Bar»), но сейчас все остальные поля в моей форме привязаны к бизнес-объекту. Я бы тоже хотел связать пару радио-кнопок с бизнес-объектом, но пока не нашел хорошего способа сделать это. Я могу привязать одну из кнопок к полю, чтобы поле было установлено в «true», если кнопка выбрана, но при выборе другой кнопки отменяется выбор первой (т. Е. Две переключатели правильно спарены ), значение поля не обновляется, чтобы отразить это.

Я хотел бы иметь возможность сказать

button1.DataBindings.Add(new Binding("checked", source, "useFoo"));
button2.DataBindings.Add(new Binding("checked", source, "!useFoo"));

но я вполне уверен, что бросит, когда он запустится. Есть ли более простой способ, или я должен просто подумать над тем, как обозначить один флажок? Я не хочу добавлять дополнительные функции для обработки чего-то такого тривиального ...

ETA: комментатор предложил рассмотреть раскрывающийся список (ComboBox). Я думал об этом, но как мне связать это с логическим полем в базе данных / свойством в бизнес-объекте? Если я свяжу SelectedItem со свойством useFoo, что будет в коллекции Items? Должен ли я добавить только «True» и «False» или я могу каким-то образом добавить объект пары ключ / значение, который связывает отображаемый элемент («Use Foo» / «Do Not Use Foo») с логическим значением, стоящим за ним? У меня проблемы с поиском документов по этому вопросу.

Об ответе: решение, которое я нашел, включало модификацию бизнес-объекта - основная идея очень похожа на ту, которая была опубликована Gurge, но я придумал ее отдельно, прежде чем прочитать его ответ. Короче говоря, я добавил отдельное свойство, которое просто возвращает!useFoo, Одна радиокнопка привязана кsource.UseFoo, а другой обязанsource.UseBar (название новой собственности). Важно убедиться, что новое свойство имеет как геттеры, так и сеттеры, иначе вы получите действительно странное поведение.

Ответы на вопрос(6)

Ваш ответ на вопрос