将列表中的项添加到comboBox

时间:2014-12-06 14:38:58

标签: c# wpf visual-studio list combobox

我希望列表中的很多项都出现在comboBox中。我在c#中相对较新,因此不能确定我能在" stuff"上执行的所有功能。例如,我有一个简单的类:

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中的各个项目出现在comboBox中。我已经从各个帖子中得到了以下代码,但其余的看起来有点模糊,或者我无法找到他们使用的组合框的属性。

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

1 个答案:

答案 0 :(得分:3)

看起来你几乎就在那里。我想在这一点上,你的ComboBox中唯一的东西是看起来很奇怪的字符串,它实际上是Foo类的完整命名空间。

接下来要做的是设置将在ComboBox中向用户显示的属性:

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

请注意,如果您使用的是MVVM pattern,那么您可以在XAML中执行类似的操作以获得类似的结果,但如果您相对较新,则可能还没有学到这一点。

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

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


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

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

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