将列表中的项目添加到组合框中

问题描述:

我想要列表中的项目出现在组合框中。我在c#中比较新,因此不确定我可以在“东西”上执行的所有功能。例如,我有一个简单的类:将列表中的项目添加到组合框中

puclic Class Foo 
{ 
    public String s; 
    public Foo(String _s) 
    {s = _s;} 
} 

然后我有一个组合框和Foo的列表:

List<Foo> luFoo = new List<Foo>(); 
//add a bunch of Foo's to luFoo 

话,我希望在luFoo各项目出现在组合框。我已经得到了来自各种帖子的以下代码,但其他的看起来有些模糊,或者我无法找到他们使用的组合框的属性。

cmbFoo.ItemsSource = luFoo; 

任何帮助将大大赞赏,谢谢。

编辑:

Foo a = new Foo("a"); 
Foo b = new Foo("b"); 
Foo c = new Foo("c"); 
Foo d = new Foo("d"); 
Foo e = new Foo("e"); 

luFoo.Add(a); 
luFoo.Add(b); 
luFoo.Add(c); 
luFoo.Add(d); 
luFoo.Add(e); 

在那里我创建并添加富对luFoo

+0

使用此代码时,您目前在'ComboBox'中看到了什么? – 2014-12-06 14:41:39

+0

因为我目前只有itemsource它显示绝对没有x“D – 2014-12-06 14:54:34

+0

哦,可能是因为你的列表目前是空的,可能想添加一些项目到它,哈哈 – 2014-12-06 14:55:50

它看起来像你几乎没有代码。我想在这一点上,ComboBox中唯一的东西是奇怪的字符串,它们实际上是Foo类的完整名称空间。

你有什么未来的设置将显示在ComboBox用户物业办:

cmbFoo.ItemsSource = luFoo; 
cmbFoo.DisplayMemberPath = "s"; 

请注意,如果你使用的MVVM pattern,你会做这样的事情在你的XAML以达到类似的结果,但如果你是比较新的,你可能还没有学到这一点。

<ComboBox ItemsSource="{Binding Path=luFoo}" DisplayMemberPath="s" /> 

除此之外,documentation始终是用于了解可用于控制不同的方法,事件和属性的重要资源。


As Flat Eric注意到,您也必须修改您的课程。在将s转换为属性,将项目添加到列表并设置DisplayMemberPath之后,您应该会看到ComboBox中列出的各种s值。

public class Foo 
{ 
    public String s { get; set; } 

    public Foo(String _s) 
    { 
     s = _s; 
    } 
} 
+0

我添加了displayMemberPath,但它仍然没有做任何事情 – 2014-12-06 14:58:14

+2

请注意's'是一个'Field',绑定只能用于'Properties' – 2014-12-06 14:59:52

+0

@FlatEric D'oh。谢谢,更新我的回答。 – 2014-12-06 15:03:59