2011-02-06 4 views
1

VS 2010의 Entity Framework 디자이너를 사용하여 "EmployeeName"이라는 복합 유형을 만들었습니다. EmployeeName은 성, 성으로 구성되며 &입니다. 질문은 어떻게 실버 라이트의 DataGrid에 표시/바인딩합니까? 지금은 Datagrid에서 각 행의 "Namespace.EmployeeName"으로 표시됩니다.Silverlight Datagrid에서 복잡한 유형 바인드

답변

2

먼저 바인딩 된 개체의 모든 속성에 대해 DataGridTextColumn의 기본 열 형식을 사용하지 않도록 DataGrid에서 AutoGenerateColumns를 false로 설정해야합니다.

그러면 표시 할 바인딩 된 개체의 각 속성에 대해 xaml에서 열을 정의해야합니다. string 또는 int과 같은 간단한 유형의 속성의 경우 (예 : DataGridTextColumn) 바인딩 속성에서 표준 바인딩을 사용할 수 있습니다. 복잡한 유형 (EmployeeName)에 대한

당신은 DataGridTemplateColumn를 사용하고 어떻게 EmployeeName을 표시하는 열을 알려주는 DataGridTemplateColumn.CellTemplate 속성의 DataTemplate를 정의 할 필요가있다. 이 일 Drknezz

<sdk:DataGrid ItemsSource="{Binding MyCollection}" 
       AutoGenerateColumns="false"> 
    <sdk:DataGrid.Columns> 
     <sdk:DataGridTemplateColumn> 
      <sdk:DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <TextBlock> 
         <Run Text="{Binding EmployeeName.Title}"></Run> 
         <Run Text="{Binding EmployeeName.FirstName}"></Run> 
         <Run Text="{Binding EmployeeName.LastName}"></Run> 
        </TextBlock> 
       </DataTemplate> 
      </sdk:DataGridTemplateColumn.CellTemplate> 
     </sdk:DataGridTemplateColumn> 
    </sdk:DataGrid.Columns> 
</sdk:DataGrid> 
+0

이것은 Run의 Text 속성이 종속성 속성 (따라서 바인딩 가능) 인 Silverlight 4를 전제로합니다. 4를 사용하지 않는다면 가로 방향의 StackPanel을 사용하여 3 개의 TextBlock을 스택 할 수 있습니다. –

+0

Simon이 솔루션을 잘 수행해 주셔서 감사합니다 :). –

+0

나는 이것이 약간의 과잉 공격이라고 생각한다 ....하지만 OP가 괜찮 았다고 말하면 나는 내 대답보다 훨씬 더 완벽하기 때문에 대답을 upvote 할 것이다. XD – Machinarius

0

XAML에서 각 열을 만들고 AutoGenerateColumns를 false로 설정하고 각 열의 바인딩 속성을 사용하여 표시 할 속성에 각 열을 수동으로 바인딩해야합니다.

http://www.wpftutorial.net/DataGrid.html

그 사이트는 주제에 더 많은 정보를 가지고있다. WPF 용으로 설계되었지만 Silverlight에서도 작동합니다.)

Good Luck and Enjoy 프로그래밍.

+0

감사를 다음과 같이 바로 EmployeeName의 각 속성에 대해 하나의 TextBlockRun를 사용하는 간단한 예제가 될 것입니다. –

관련 문제