2010-06-01 2 views
0

이 설명하는 가장 쉬운 방법은 예제로 생각합니다. Silverlight 4 변환기에서 반환되는 내용을 기반으로 바인딩

나는 사람들의 목록의 데이터 컨텍스트와 데이터 그리드가이 개체 :

사람들 { 문자열 이름; int AstroSignCode; }

값이 데이터베이스에 유지되므로 astro 기호를 저장하는 코드를 사용하고 있습니다. 나는 단지 점성술 객체를 사용할 수 없다.

AstrologySign {: 다음

나는이 객체에 결합 AstrologySign.ID와 People.AstroSignCode 간의 상호 참조에 따라 증상의 정적 목록에서 AstrologySign 개체를 반환하는 컨버터를 사용하는 텍스트 열이 문자열 이름; DateTime StartDate; DateTime EndDate; int ID; }

그래서 변환기는 표시 가능한 항목 대신 개체를 반환합니다.

어떻게 변환기에서 반환 된 개체의 멤버에 Column을 바인딩합니까?

내 XAML 지금까지 열이 있습니다 :

내가이 DataGridTemplateColumn을 사용해야 할 수도 있다고 생각하지만 난 더 이상 모르겠어요.

답변

0

나는 내 자신의 질문에 대답했다. 나에게 분명하지 않았기 때문에 이것을 알아내는 데 약간의 시간이 걸렸다.

사실 DataGridTextColumn 대신 DataGridTemplateColumn을 사용해야합니다.

<sdk:DataGridTemplateColumn Header="Astro Sign"> 
       <sdk:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock DataContext="{Binding AstroSign, Converter={StaticResource AstrologySignConverter}}" Text="{Binding Name}"/> 
        </DataTemplate> 
       </sdk:DataGridTemplateColumn.CellTemplate> 
      </sdk:DataGridTemplateColumn> 

여기서 일어나는 것은 DataGrid의 데이터 컨텍스트가 사람 목록입니다. 각 사람은 정수인 astrosigncode를가집니다. 이것은 AstrologySignConverter에 의해 이름을 포함하는 AstrologySign 객체에 매핑됩니다. 그래서 나는 datatemplate을 만들고 TextBlock 컨트롤을 사용하고 변환기를 사용하는 바인딩에 컨텍스트를 설정 한 다음 변환기가 반환하는 객체의 요소에 바인딩합니다.

당신이 할 수 있다는 것을 알게되면 간단합니다. 이 문제를 해결해 주신 분께 감사드립니다!

관련 문제