当绑定集合列表时,ListBox 显示 (Collection) 而不是对象的 ToString()

本文关键字:对象 ToString 绑定 Collection 列表 ListBox 显示 集合 | 更新日期: 2023-09-27 17:55:49

我有一个ListBox,它绑定到A类元素列表的实例,这是一个集合。

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

列表框:

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

运行应用程序时,每个项目都显示"(集合)"

我该怎么做才能使每个项目显示"A"而不是"收藏"?

当绑定集合列表时,ListBox 显示 (Collection) 而不是对象的 ToString()

ItemsSource 期望该属性是 IEnumerable,因此它绑定到集合的内容,而不是直接绑定到 List 对象。

我该怎么做才能让每个项目都显示出来 "A"而不是"集合"?

您需要重写列表项 (B) 上的 ToString 方法,而不是列表本身 (A)。

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

为了解决这个问题,我做了以下工作:

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;
}