2011-03-24 3 views
0

나는 사람의 집합 인 listBox.ItemsSource = e.Result.Persons을 사용하고 있습니다. 목록 상자에는 각 개체의 이름을 표시하려고 할 때 실제 개체 이름이 표시됩니다. 어떻게해야합니까?Silverlight 목록 상자 질문

답변

1

목록 상자 ItemTemplate을 사용하십시오. 이런 식으로.

listBox.ItemsSource = e.Result.Persons.Select(d => new { FirstName }); 
0

, 당신은 단순히 다음과 같이 바인딩 수 부작용 (추가 마크 업 없음) :

<ListBox DisplayMemberPath="FirstName" /> 

더 복잡한 항목 표현은 템플릿 (아래 참조)을 사용하십시오.

+0

ListBox의 Person 인스턴스를 FirstName 콘텐트로 대체 할 때마다 요청 된 기능을 구현하는 것이 맘에 들지 않습니다. 예를 들어, 아마도 SelectedItem 속성에 대해이 동작을 원하지 않을 것입니다. – Eilistraee

+0

동의하지만, 목록 상자가 원본 데이터와 완전히 연결되어 있지 않고 값을 추출하려는 값이 있으면 옵션입니다. 물론 바인딩 방식이 가장 좋은 방법이지만,이 옵션은 사용자의 요구를 충족시키기 위해 익명 형식을 필터링하는 기능을 보여줍니다. –

+0

위대한 토론 친구들, 고맙습니다. – Sean

0

를 또는 어떤없이 쉽게 원하는 게 정확히 전용 "DisplayMemberPath" property을 사용 : 다른 응답에 의해 지정된 바인딩의 방법 외에

<ListBox> 
<ListBox.ItemTemplate> 
<DataTemplate> 
<TextBlock Text="{Binding FirstName}"/> 
</ListBox.ItemTemplate> 
</DataTemplate> 
</ListBox> 
0

Persons 개체의 ToString() 메서드를 재정 의하여 Person의 이름을 표시 할 수 있습니다.

관련 문제