C#/WPF : Toolkit DataGrid - Transpose rows and columns

标签 c# wpf datagrid columnheader

我有一个

List<DetailObject> someList;

看起来像这样:

    public class DetailObject
    {
        public string Titel { get; set; }
        public int Value1 { get; set; }
        public int Value2 { get; set; }
        public int Value3 { get; set; }
    }

有谁知道我如何使用(使用 DataGrid.AutoGenerateColumns="True")'string Titel' 的值作为 RowHeader 和其他成员作为“行”内容?没有任何修改,它会显示“Titel”作为 ColumnHeader 和 Titel 的值作为行,同上 “Value1”作为 ColumnHeader,Value1 的值作为 Rows 等。

感谢您的帮助!

干杯

编辑: 为了更好的理解,这就是我所拥有的

[Titel]       [Value1]       [Value2]       [Value3]
[Item1.Titel] [Item1.Value1] [Item1.Value2] [Item1.Value3] 
[Item2.Titel] [Item2.Value1] [Item2.Value2] [Item2.Value3] 
[Item3.Titel] [Item3.Value1] [Item3.Value2] [Item3.Value3] 

这就是我要找的:

[Item1.Titel]  [Item2.Titel]  [Item3.Titel] 
[Item1.Value1] [Item2.Value1] [Item3.Value1]
[Item1.Value2] [Item2.Value2] [Item3.Value2]
[Item1.Value3] [Item2.Value3] [Item3.Value3]

编辑2: 我在这里也找到了一个不错的方法: http://codemaverick.blogspot.com/2008/02/transpose-datagrid-or-gridview-by.html

最佳答案

您可以像这样使用 RowHeaderTemplate:

<toolkit:DataGrid>
  <toolkit:DataGrid.RowHeaderTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Item.Titel, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type toolkit:DataGridRow}}}"/>
    </DataTemplate>
  </toolkit:DataGrid.RowHeaderTemplate>
</toolkit:DataGrid>

您还必须将 AutoGenerateColumns 设置为 false 并创建您自己的列以避免 Titel 属性也显示为列。

编辑

我现在了解到您想要转置 DataGrid。我认为简单但有点“hacky”的解决方案是创建一个“转置”对象列表。为此,您必须事先知道原始列表中有多少对象,然后创建一个新类,其属性与对象的数量一样多。

class TransposedDetailObject {
  public String Column1 { get; set; }
  public String Column2 { get; set; }
  public String Column3 { get; set; }
}

var transposedList new List<TransposedDetailObject> {
  new TransposedDetailObject {
    Column1 = someList[0].Titel,
    Column2 = someList[2].Titel,
    Column3 = someList[3].Titel
  },
  new TransposedDetailObject {
    Column1 = someList[0].Value1,
    Column2 = someList[2].Value1,
    Column3 = someList[3].Value1
  },
  ...
};

一个不太“hacky”的解决方案是修改 DataGrid 的控件模板以交换行和列。但是,DataGrid 是一个复杂的控件,修改控件模板可能有点让人不知所措。

关于C#/WPF : Toolkit DataGrid - Transpose rows and columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1470454/

相关文章:

c# - C# 中的泛型找不到 T

c# - 遍历 WPF 的 Xceed DataGrid 中的所有单元格?

mysql - Vb6 记录更新错误

c# - 将 DataSet 与 DataGrid 一起使用

c# - 每周做某事的 MVC .NET Web 应用程序

c# - 将 DataTable 转换为 ObservableCollection(没有特定类)

c# - 在 azure 函数中查询 Azure 表存储并插入 Dynamics CRM

c# - 为什么我不能序列化其中包含结构的对象?

wpf - slider 不适用于触摸输入

mysql - 带复合键数据库表的 w2ui Grid