2009-09-08 10 views
1

La question est pour Windows Forms DataBindingWindows Forms exemple simple montrant Radiobutton DataBinding

Disons que ceci est ma classe personnalisée

public class SimpleClass : INotifyPropertyChanged 
{ 

    public Name 
    {get; set;} 

    char OrderType; 
    ... 

} 

OrderType est P pour l'ordre d'achat, S pour l'ordre de vente. I pour la facture etc que je dois montrer en tant que groupe de boutons radio sur le Windows Form

pour textboxes c'est la syntaxe de liaison de données

Binding nameBinding = new Binding("Text", this.SimpleObject, "Name", true); 
this.nameTextBox.DataBindings.Add(nameBinding); 

Comment Databind le OrderType à un groupbox qui contient trois boutons radio

Répondre

1

Deux questions:

  1. DataBinding travaille sur propriétés seulement. Comme vous l'avez, OrderType est un champ.
  2. La liaison à RadioButton s de cette façon (comme la plupart des gens voudraient faire), n'est pas quelque chose de nativement soutenu. La seule façon réelle de le faire est de créer un seul contrôle qui gère un ou plusieurs RadioButton s et fournit une propriété SelectedValue (ou équivalente), puis lier la valeur à cela. Il existe plusieurs solutions tierces à cela, et je peux recommander les contrôles DevExpress.
+0

Oups J'ai oublié de mettre la propriété pour OrderType. Donc, si je n'utilise pas un contrôle tiers, ce que je retiens de votre explication, c'est que je dois créer un UserControl chaque fois que j'ai besoin d'utiliser des radiobuttons dans une boîte de groupe. Est-ce exact? – codemnky

+0

Eh bien, vous ne créerez pas un UserControl * à chaque fois *, mais vous devrez peut-être trouver un contrôle personnalisé existant ou créer votre propre version générique qui peut supporter cela. –

1

Voici un exemple de Databinding un ensemble de RadioButtons (l'auteur appelle cela un RadioPanel) avec une propriété soutenue avec un enum (à la place de votre char):

RadioPanel: Binding RadioButton Groups to Enumeration Properties

refuge I » Je l'ai essayé. Sinon, ce qui a fonctionné pour moi était de créer un contrôle utilisateur avec quelques boutons radio. La clé consistait à implémenter INotifyPropertyChanged sur l'UC et à utiliser l'événement CheckedChanged de RadioButtons pour définir la valeur de la propriété associée à mon UC.

+0

merci. J'ai couru dans cet article tout en googling. Je ne pense pas que cela devrait être impliqué. Si je n'utilise pas la liaison de données, je pourrais simplement vérifier l'index sur CheckedChanged et mettre à jour mon objet personnalisé de manière appropriée. J'essaye juste de creuser mon cerveau autour de la liaison de données. Dans certains cercles (Alt.Net), la liaison de données n'est même pas une pratique recommandée – codemnky