我使用VS 2010中的Entity Framework设计器创建了一个名为“EmployeeName”的复杂类型。 EmployeeName由FirstName,LastName&标题。 现在问题是如何在silverlight中显示/绑定到datagrid? 现在,它在Datagrid中显示为每行中的“Namespace.EmployeeName”。
答案 0 :(得分:2)
首先,您需要在DataGrid上将AutoGenerateColumns设置为false,以避免为绑定对象的所有属性获取默认列类型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>
答案 1 :(得分:0)
您必须在XAML中创建每个列并将AutoGenerateColumns设置为false,并使用每列的Binding属性手动将每个列绑定到要显示的属性。
http://www.wpftutorial.net/DataGrid.html
该网站在该主题中有更多信息。它是为WPF设计的,但它也适用于Silverlight;)
祝你好运并享受编程。