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

本文关键字:组合 添加 项目 列表 | 更新日期: 2023-09-27 18:33:17

我希望列表中的很多项目出现在组合框中。我对 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中的各种项目出现在comboBox中。我已经从各种帖子中获得了以下代码,但其余部分似乎有点模糊,或者我找不到他们使用的 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);

我创建 Foo 并将其添加到 luFoo 的代码

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

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

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

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

请注意,如果使用 MVVM 模式,则会在 XAML 中执行类似操作以实现类似的结果,但如果相对较新,则可能尚未了解这一点。

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

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


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

public class Foo
{
   public String s { get; set; }
   public Foo(String _s)
   {
       s = _s;
   }
}