Comment puis-je utiliser la liaison de données avec Windows Forms boutons radio?

J'ai un champ binaire dans ma base de données qui est difficile à décrire, dans une INTERFACE utilisateur à l'aide d'un seul "Est XXXX?"-type de case à cocher. Je préfère utiliser une paire de boutons radio (par exemple, "Faire de la Foo" et "Faire de la Barre de chemin"), mais pour l'instant, tous les autres champs de mon formulaire sont liés aux données d'un objet métier. J'aimerais données-lier la paire de boutons radio à l'objet de l'entreprise, mais ne viens pas avec une bonne façon de le faire encore. Je peux lier l'un des boutons pour le domaine, tels que le champ a la valeur "true" si le bouton est sélectionné, mais tout en sélectionnant le bouton autre ne dé-sélectionnez le premier (qui est, les deux boutons radio sont correctement appariés), la valeur du champ n'est pas à jour pour refléter cela.

Je voudrais être en mesure de dire

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

mais je suis certain que cela va les jeter lorsqu'il s'exécute. Est-il un moyen plus facile, ou devrais-je simplement mettre plus de pensée dans la façon dont à la parole une seule case? Je ne veux pas d'ajouter des fonctions supplémentaires à gérer quelque chose d'aussi trivial...

ETA: UN intervenant a suggéré d'examiner une liste déroulante (ComboBox). J'avais pensé à ce sujet, mais comment aurais-je de données-lier à un champ booléen dans une base de données de la Propriété à un objet métier? Si je la lie de la SelectedItem à la useFoo de la propriété, ce serait aller dans la collection d'Éléments? Aurais-je dû ajouter "Vrai" et "Faux", ou pourrais-je en quelque sorte ajouter une paire clé/valeur de l'objet qui lie un élément affiché ("Utilisation Foo" /"Ne Pas Utiliser de Foo") à la valeur booléenne derrière elle? Je vais avoir du mal à trouver des docs sur ce.


À propos de la réponse: la solution que j'ai liquidé l'aide d'impliquer la modification de l'objet de l'entreprise -- l'idée de base est très similaire à celui posté par Gurge, mais j'ai trouvé séparément avant j'ai lu sa réponse. En bref, j'ai ajouté une propriété séparée, qui renvoie simplement !useFoo. Un bouton radio est lié à source.UseFoo, et l'autre est lié à source.UseBar (le nouveau nom de la propriété). Il est important de s'assurer que la nouvelle propriété possède à la fois des getters et setters, ou vous vous retrouverez avec vraiment un comportement étrange.

OriginalL'auteur Coderer | 2008-12-05