2014-12-06 2 views
1

콤보 상자에 목록의 전체 항목을 표시하고 싶습니다. 저는 C#에서 비교적 새로운 것이므로 "stuff"에서 수행 할 수있는 모든 기능을 잘 모릅니다.목록에서 콤보 상자에 항목 추가하기

List<Foo> luFoo = new List<Foo>(); 
//add a bunch of Foo's to luFoo 

그때 luFoo의 다양한 항목에 대해 원하는 콤보 상자 표시하기 :

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

그때 콤보 상자와 푸의 목록을 가지고 예를 들어, 나는 간단한 클래스가 있습니다. 나는 여러 게시물에서 다음 코드를 얻었지만, 나머지는 막연한 것처럼 보이거나 사용 된 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); 

내가 만들고

+0

이 코드를 사용할 때 현재'ComboBox'에서 무엇을 볼 수 있습니까? –

+0

나는 현재 아이템 소스 만 가지고 있기 때문에 아무것도 표시하지 않는다 "D –

+0

오우 아마도 목록이 현재 비어 있기 때문일 수도 있습니다 .Lol에 몇 가지 항목을 추가 할 수도 있습니다. –

답변

3

그것은 당신의 거의처럼 보이는 푸의가 luFoo에 추가하는 코드입니다. 이 시점에서 ComboBox의 유일한 것은 이상한 모양의 문자열이며 실제로는 Foo 클래스의 전체 네임 스페이스입니다.

당신은 콤보 상자에서 사용자에게 표시되는 속성을 설정 한 다음에 무엇을해야 : 당신이 MVVM pattern를 사용한다면, 당신은 당신의 XAML에서 같은 것을 할 것이라고

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

주 비슷한 결과를 얻으려면,하지만 당신이 비교적 새로운 것이라면 아직 이것을 배웠을 것입니다. 그 너머

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

documentation은 항상 제어에 사용할 수있는 다른 방법, 이벤트 및 속성에 대한 학습을위한 훌륭한 자원이다.


플랫 Eric이 지적한 것처럼 클래스도 수정해야합니다. s을 속성으로 변환하고 목록에 항목을 추가 한 다음 DisplayMemberPath을 설정하면 다양한 값인 s이 ComboBox에 표시됩니다.

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

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

displayMemberPath를 추가했지만 여전히 아무것도하지 않습니다 –

+2

's'는'Field'이고 Binding은'Properties'와 만 작동합니다. –

+0

@FlatEric D' oh. 고마워요, 내 대답이 업데이트되었습니다. –

관련 문제