来自ItemSource的C#WPF DataGrid样式

时间:2017-01-17 00:19:45

标签: c# wpf datagrid styles row

如果要填充DataGrid,可以添加它们以向Datagrid.ItemSource提供对象列表。例如Person(姓名,年龄,......)或其他。

有没有办法在Object(Person)中放置一些更多(额外)信息来单独设置DataGrid中的每一行,只使用Datagrid.ItemSource = List<Person>

2 个答案:

答案 0 :(得分:0)

仅当您修改Person类以包含该信息时。例如,您可以在其中放置一个图标,然后让DataGrid每行显示一个不同的图标。但这有点脏。

相反,我建议使用转换器。当您的数据如年龄传递到WPF窗口时,您的转换器将执行,您可以返回任何您喜欢的内容,例如图标,颜色等......这样您就可以自定义每一行并将逻辑全部保留在转换器中Person类与UI的东西混在一起。

答案 1 :(得分:0)

您可以将DataGridTemplateColumn添加到DataGrid的Columns集合中,并将您想要的任何UIElement放入其CellTemplate中,例如:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel>
                        <Rectangle Width="50" Height="50" Fill="Gray" />
                        <TextBlock Text="{Binding Name}" />
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>