вы также можете использовать linq и анонимные типы для достижения того же результата с гораздо меньшим объемом кода, как описано здесь .
ОБНОВЛЕНИЕ: блог не работает, вот содержание:
(..) Значения, показанные в таблице, представляют длину строк, а не строковых значений (!) Это может показаться странным, но именно так механизм связывания работает по умолчанию - для данного объекта он будет пытаться привязать к первому свойству этого объект (первое свойство, которое он может найти). При передаче экземпляра класса String свойство, к которому он привязывается, - String.Length, поскольку нет другого свойства, которое предоставило бы саму строку.
Это означает, что для правильной привязки нам нужен объект-оболочка, который будет отображать фактическое значение строки как свойство:
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>();
Table1.SetDataBinding(testdata);
Хотя это решение работает так, как ожидалось, для него требуется довольно много строк кода (в основном для преобразования списка строк в список оболочек строк).
Мы можем улучшить это решение, используя LINQ и анонимные типы - мы будем использовать запрос LINQ для создания нового списка строковых оболочек (в нашем случае строковая оболочка будет анонимным типом).
var values = from data in testData select new { Value = data };
Table1.SetDataBinding(values.ToList());
Последнее изменение, которое мы собираемся сделать, это переместить код LINQ в метод расширения:
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();
}
Таким образом, мы можем повторно использовать код, вызывая единственный метод для любой коллекции строк:
Table1.SetDataBinding(testData.CreateStringWrapperForBinding());
DataPropertyName
Колонны должна бытьValue