Я создал сложный тип под названием «EmployeeName», используя конструктор Entity Framework в VS 2010. Имя сотрудника состоит из имени, фамилии и должности. Теперь вопрос: как отобразить/привязать к сетке данных в silverlight? Прямо сейчас он отображается в Datagrid как «Namespace.EmployeeName» в каждой строке.
Привязка сложного типа в Silverlight Datagrid
Ответы (2)
Во-первых, вам нужно установить для AutoGenerateColumns значение false в DataGrid, чтобы избежать получения типа столбца по умолчанию DataGridTextColumn для всех свойств ваших связанных объектов.
Затем вам нужно определить столбцы в xaml для каждого из свойств ваших связанных объектов, которые вы хотите отобразить. Для свойств простого типа, таких как string
или int
(например), вы можете просто использовать DataGridTextColumn
со стандартной привязкой в свойстве привязки.
Для вашего сложного типа (EmployeeName
) вам нужно использовать DataGridTemplateColumn
, а затем определить DataTemplate
для свойства DataGridTemplateColumn.CellTemplate
, которое сообщает столбцу, как отображать EmployeeName
. Простой пример, который просто использует один TextBlock
и Run
для каждого свойства EmployeeName
, будет следующим:
<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>
Вы должны создать каждый столбец в XAML и установить для AutoGenerateColumns значение false, а также вручную привязать каждый столбец к свойству, которое вы хотите отобразить, используя свойство Binding каждого столбца.
http://www.wpftutorial.net/DataGrid.html
На этом сайте больше информации в теме. Он разработан для WPF, но будет работать и для Silverlight;)
Удачи и наслаждайтесь программированием.