C#/ WPF:Toolkit DataGrid – 转置行和列
我有一个
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的值显示为row,dito for 谢谢你的帮助! 干杯 编辑: [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] EDIT2: 解决方法
您可以像这样使用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是一个复杂的控件,修改控件模板可能有点压倒性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |