Сложный тип связывания в Silverlight Datagrid - PullRequest
1 голос
/ 06 февраля 2011

Я создал сложный тип с именем «EmployeeName», используя конструктор Entity Framework в VS 2010. EmployeeName состоит из FirstName, LastName и title.Теперь вопрос в том, как мне отобразить / привязать сетку данных в silverlight?Прямо сейчас он отображается в Datagrid как "Namespace.EmployeeName" в каждой строке.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011

Во-первых, необходимо установить для 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>
0 голосов
/ 06 февраля 2011

Необходимо создать каждый столбец в XAML и установить для AutoGenerateColumns значение false, а также вручную привязать каждый столбец к свойству, которое вы хотите отобразить, используя свойство Binding каждого столбца.

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

Этот сайт имеет больше информации в теме. Он предназначен для WPF, но будет работать и для Silverlight;)

Удачи и приятного программирования.

...