ItemSsource 的 C# WPF DataGrid 样式
C# WPF DataGrid Style from ItemSource
如果要填充 DataGrid,可以添加它们以提供 Datagrid.ItemSource
对象列表。例如 Person (name, age,...) 或其他。
有没有办法在对象(人)中放置更多(额外)信息以单独设置 DataGrid 中每一行的样式,仅需使用 Datagrid.ItemSource = List<Person>
?
仅当您修改个人 class 以包含该信息时。例如,您可以在其中放置一个图标,然后让 DataGrid 每行显示一个不同的图标。但这有点脏。
相反,我建议使用转换器。当你的数据如年龄被传递到 WPF window 你的转换器将执行并且你可以 return 任何你喜欢的东西,例如图标,颜色等......这样你可以自定义每一行和将逻辑全部保留在您的转换器中,而不会将 Person class 与 UI 的东西混在一起。
您可以将 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>
如果要填充 DataGrid,可以添加它们以提供 Datagrid.ItemSource
对象列表。例如 Person (name, age,...) 或其他。
有没有办法在对象(人)中放置更多(额外)信息以单独设置 DataGrid 中每一行的样式,仅需使用 Datagrid.ItemSource = List<Person>
?
仅当您修改个人 class 以包含该信息时。例如,您可以在其中放置一个图标,然后让 DataGrid 每行显示一个不同的图标。但这有点脏。
相反,我建议使用转换器。当你的数据如年龄被传递到 WPF window 你的转换器将执行并且你可以 return 任何你喜欢的东西,例如图标,颜色等......这样你可以自定义每一行和将逻辑全部保留在您的转换器中,而不会将 Person class 与 UI 的东西混在一起。
您可以将 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>