Je suivais le modèle de conception presentation model suggéré par Martin Fowler pour mon architecture graphique dans un projet Windows Forms.Windows Forms radioButton liaison de données
"L'essence d'un modèle de présentation est d'une classe entièrement autonome qui représente toutes les données et le comportement de la fenêtre de l'interface utilisateur, mais sans aucun des contrôles utilisés pour afficher cette interface utilisateur sur l'écran. Je projette simplement l'état du modèle de présentation sur la vitre .... " - Martin Fowler
Je trouve le concept très fluide et facile à comprendre à part ce problème de liaison de données RadioButtons aux propriétés sur le Data/Domain objet.
Supposant J'ai un formulaire Windows avec trois boutons radio pour représenter certaines options "Mode", comme -
- Auto
- Manuel
- importation
Comment puis-je utiliser les propriétés booléennes sur Data/Domain Objects à DataBind à ces boutons? J'ai essayé beaucoup de manières mais en vain. Par exemple, je voudrais code comme -
rbtnAutoMode.DataBindings.Add("Text", myBusinessObject, "IsAutoMode");
rbtnManualMode.DataBindings.Add("Text", myBusinessObject, "IsManualMode");
rbtnImportMode.DataBindings.Add("Text", myBusinessObject, "IsImportMode");
Il devrait y avoir une quatrième propriété comme « selectedMode » sur l'objet de données/domaine qui, à la fin devrait représenter une valeur unique comme « selectedMode = Auto ». Je suis en train de mettre à jour cette propriété lorsque l'un des « IsAutoMode », « IsManualMode » ou « IsImportMode » est modifié, par exemple à travers les setters de la propriété. J'INotifyPropertyChanged mis en œuvre sur mon objet de données/domaine afin, mettre à jour les données propriété/objet domaine met à jour automatiquement mes contrôles de l'interface utilisateur, ce n'est pas un problème.
Il est un bon exemple de lier deux boutons radio dans Stack Overflow question How do I use databinding with Windows Forms radio buttons?, mais je manque le lien tout en appliquant la même chose avec trois boutons. J'ai des comportements très erratiques pour les boutons radio.
J'espère que j'ai pu l'expliquer raisonnablement. Je suis en fait pressé et ne pouvait pas mettre un code détaillé sur le post, mais toute aide à cet égard est apprécié.
Il y a une solution simple à ce problème en exposant une méthode comme -
public void SetMode(Modes mode)
{
this._selectedMode = mode;
}
qu'on pourrait appeler de la « CheckedChanged » événement des boutons radio de l'interface utilisateur et serait parfaitement régler la « selectedMode » sur l'objet métier, mais j'ai besoin d'étirer les limites pour vérifier si cela peut être fait par DataBinding.