我希望列表中的很多项都出现在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
答案 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;
}
}