ListBox показывает (Collection) вместо ToString () объекта, когда список коллекций связан - PullRequest
1 голос
/ 11 мая 2011

У меня есть ListBox, который связан с экземпляром списка элементов класса A, который является коллекцией.

class A : List<B> 
{ 
  public override ToString()
  {
    return "A";
  }
}

class C
{
  List<A> list;
}

ListBox:

<ListBox ItemsSource="{Binding list}"></ListBox>

Когда приложениезапускается, каждый элемент показывает «(Коллекция)»

Что можно сделать, чтобы каждый элемент отображал «А» вместо «Коллекция»?

Ответы [ 3 ]

1 голос
/ 11 мая 2011

ItemsSource ожидает, что свойство будет IEnumerable, поэтому оно связывается с содержимым коллекции вместо объекта List напрямую.

0 голосов
/ 11 мая 2011

Для решения этой проблемы я сделал следующее:

class A : IEnumerable
{
  private List<B> _bList = new List<B>();

  public override ToString()
  {
    return "A";
  }

  IEnumerator GetEnumerator()
  {
    return _bList.GetEnumerator();
  }

  public void Add(B element){
  {
    _bList.Add(element);
  }
}

class C
{
  List<A> list;
}
0 голосов
/ 11 мая 2011

Что я могу сделать, чтобы каждый элемент показывал «A» вместо «Коллекция»?

Вам необходимо переопределить метод ToString в элементах списка (B) не сам список (A).

public class B 
{
   public override ToString()
   {
      return "A";
   }
}
...