vous pouvez également utiliser linq et les types anonymes pour obtenir le même résultat avec beaucoup moins de code comme décrit ici.
Mise à JOUR: le blog est en panne, voici le contenu:
(..) Les valeurs indiquées dans le tableau représentent la longueur des cordes à la place de la chaîne de valeurs (!)
Il peut sembler étrange, mais c'est la façon dont le mécanisme de liaison fonctionne par défaut donné par un objet, il va essayer de se lier à la première propriété d'un objet (la première propriété, il peut se trouver).
Lorsqu'il est passé d'une instance de la classe String la propriété il se lie à l'est de la Chaîne.Durée, car il n'y a pas d'autres biens que fournirait la chaîne elle-même.
Cela signifie que pour obtenir notre droit contraignant nous avons besoin d'un objet wrapper qui permettra de présenter la valeur réelle d'une chaîne de caractères comme une propriété:
public class StringWrapper
{
string stringValue;
public string StringValue { get { return stringValue; } set { stringValue = value; } }
public StringWrapper(string s)
{
StringValue = s;
}
}
List<StringWrapper> testData = new List<StringWrapper>();
// add data to the list / convert list of strings to list of string wrappers
Table1.SetDataBinding(testdata);
Bien que cette solution fonctionne comme prévu, il nécessite un certain nombre de lignes de code (surtout pour convertir la liste des chaînes à la liste de chaîne de pâtes).
Nous pouvons améliorer cette solution par l'utilisation de LINQ et les types anonymes -, nous allons utiliser une requête LINQ pour créer une nouvelle liste de chaîne de wrappers (enveloppe de chaîne sera un type anonyme dans notre cas).
var values = from data in testData select new { Value = data };
Table1.SetDataBinding(values.ToList());
Le dernier changement que nous allons faire est de déplacer le code LINQ à une méthode d'extension:
public static class StringExtensions
{
public static IEnumerable CreateStringWrapperForBinding(this IEnumerable<string> strings)
{
var values = from data in strings
select new { Value = data };
return values.ToList();
}
De cette façon, on peut réutiliser le code par appel de méthode unique sur toute la collection de chaînes de caractères:
Table1.SetDataBinding(testData.CreateStringWrapperForBinding());