2014-12-06 140 views
1

我想要列表中的項目出現在組合框中。我在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

回答

3

它看起來像你幾乎沒有代碼。我想在這一點上,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