DataGridView, привязанный к BindingList, отображает пустые строки

Этот код заставляет DataGridView grid отображать пустые строки, хотя в нем есть столбец с DataPropertyName установленным на «MyProp1»:

public class MyClass
{
  public int MyProp1;
  public int MyProp2;
  public int MyProp3;
}

public class MyItems:IListSource
{
  BindingList<MyClass> _items = new BindingList<MyClass>();

  //..............................

  //IListSource
  public bool ContainsListCollection
  {
      get { return false; }
  }

  //IListSource
  public System.Collections.IList GetList()
  {
      return _items;
  }
}

MyItems i = new MyItems();
.............
//MyItems list is populated
.............
grid.DataSource = i;

Что может быть не так?

Если я создаю DataTable со столбцом «MyProp1», его содержимое отображается правильно.


person Paul    schedule 22.10.2013    source источник
comment
Почему ContainsListCollection возвращает false в геттере?   -  person Hamlet Hakobyan    schedule 22.10.2013
comment
Можете ли вы опубликовать XAML для своего представления данных?   -  person 1.618    schedule 22.10.2013
comment
Это WPF или WinForms? Если элементы вашей коллекции IList, возврат должен быть истинным, иначе ложным.   -  person Hamlet Hakobyan    schedule 22.10.2013
comment
@Alireza опубликовал решение.   -  person Hamlet Hakobyan    schedule 22.10.2013


Ответы (1)


Вам нужно изменить общедоступные поля MyClass на соответствующие свойства:

public class MyClass
{
   public int MyProp1 { get; set; }
   public int MyProp2 { get; set; }
   public int MyProp3 { get; set; }
}
person Alireza    schedule 22.10.2013
comment
Это помогло! Теперь работает даже с List<T> вместо BindingList<T> и true или false в ContainsListCollection без разницы. - person Paul; 22.10.2013