【问题标题】:Adding items from a list to a comboBox将列表中的项目添加到组合框
【发布时间】:2014-12-06 23:04:12
【问题描述】:

我希望列表中的大量项目出现在组合框中。我在 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);

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

【问题讨论】:

  • 因为我目前只有 itemsource,所以它完全没有显示 x"D
  • 发布您要向列表中添加项目的代码

标签: c# wpf visual-studio list combobox


【解决方案1】:

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

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

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

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

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

除此之外,documentation 始终是了解控件可用的不同方法、事件和属性的绝佳资源。


正如 Flat Eric 所说,您还必须修改您的类。将s 转换为属性、将项目添加到列表并设置DisplayMemberPath 后,您应该会在组合框中看到s 的各种值。

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

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

【讨论】:

  • 我添加了 displayMemberPath 但它仍然没有做任何事情
  • 请注意sField 并且绑定仅适用于Properties
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 2017-05-27
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多