Objective-c/cacao offre une forme de liaison où les propriétés d'un contrôle (texte dans une zone de texte) peuvent être liées à la propriété d'un objet. J'essaie de dupliquer cette fonctionnalité dans C# w/.Net 3.5.Liaison de données à un objet en C#
J'ai créé la classe suivante très simple dans le fichier MyClass.cs:
class MyClass
{
private string myName;
public string MyName
{
get
{
return myName;
}
set
{
myName = value;
}
}
public MyClass()
{
myName = "Allen";
}
}
J'ai aussi créé un formulaire simple avec 1 et 1 bouton zone de texte. J'ai initié une instance de Myclass dans le code du formulaire et construit le projet. À l'aide de l'Assistant DataSource dans Vs2008, j'ai sélectionné pour créer une source de données basée sur l'objet et sélectionné l'assembly MyClass. Cela a créé une entité de source de données. J'ai changé la liaison de données de la zone de texte à cette source de données; Cependant, le résultat attendu (que le contenu de la zone de texte serait "allen") n'a pas été atteint. De plus, mettre du texte dans la zone de texte ne met pas à jour la propriété name de l'objet. Je sais qu'il me manque quelque chose de fondamental ici. À un moment donné, je devrais lier mon instance de la classe MyClass que j'ai initialisée dans le code du formulaire à la zone de texte, mais cela ne s'est pas produit. Tout ce que j'ai regardé en ligne semble passer en revue l'utilisation de DataBinding avec un objet (ou je manque complètement la marque), donc toute aide est très appréciée.
Edit:
En utilisant ce que j'appris par les réponses, je regardais le code généré par Visual Studio, il avait les éléments suivants:
this.myClassBindingSource.DataSource = typeof(BindingTest.MyClass);
si je commente cela et remplacer:
this.myClassBindingSource.DataSource = new MyClass();
Je reçois le comportement attendu. Pourquoi le code par défaut est-il généré par VS comme il est? En supposant que c'est plus correct que la méthode qui fonctionne, comment dois-je modifier mon code pour travailler dans les limites de ce que VS généré?
Le code par défaut est géré de telle sorte que, au moment de la conception, tous les contrôles connaissent les différents types de propriétés qui seront accessibles à la base de données. Mais à l'exécution, vous avez besoin d'une instance réelle. Ne supprimez pas le code généré automatiquement, jsut définissez une nouvelle valeur dans votre formulaire onload ou soemthing –