2011-05-10 55 views
1

我有一个列表框绑定到类A的元素列表的一个实例,这是一个集合。列表框显示(集合),而不是对象的ToString()当集合列表绑定

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

class C 
{ 
    List<A> list; 
} 

列表框:

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

当应用程序运行时,每一个项目显示 “(集合)”

我能做些什么,使每一个项目显示 “A” 代替“采集”?

+0

“绑定” 不是一个单词。 – 2011-05-10 22:55:15

回答

0

为了解决这个问题,我做了以下内容:

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

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

0

我该怎么做才能让每个项目显示 “A”而不是“Collection”?

你需要重写的列表项(B)列表本身(一)ToString方法。

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

列表框中的每个项目都绑定到A类的一个实例。 A是B对象的集合。 我的目标是绑定对象列表框的列表,让每一个项目显示例如: “项包含30个B对象” “项包含14个B对象” 代替该每个项目显示“(集合) “ – Damian 2011-05-11 11:38:24