【问题标题】:C# WPF DataGrid Style from ItemSource来自 ItemSource 的 C# WPF DataGrid 样式
【发布时间】:2017-05-31 22:11:55
【问题描述】:

如果你想填充一个DataGrid,你可以添加它们给Datagrid.ItemSource一个对象列表。例如 Person (name, age,...) 或其他。

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

【问题讨论】:

  • 您是否在问是否可以根据网格 itemsource 中对象的属性设置数据网格行的样式?
  • 是的,这就是问题

标签: c# wpf datagrid styles row


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以将 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>
    

    【讨论】:

      猜你喜欢
      • 2018-12-09
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      相关资源
      最近更新 更多