Jos*_*nel 7 c# wpf datagrid columnheader
我有一个
List<DetailObject> someList;
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
public class DetailObject
{
public string Titel { get; set; }
public int Value1 { get; set; }
public int Value2 { get; set; }
public int Value3 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何使用(使用DataGrid.AutoGenerateColumns ="True")'string Titel'的值作为RowHeader和其他成员作为"行"内容?没有任何修改,它会显示"Titel"作为ColumnHeader并将Titel的值显示为行,将"Value1"的dito显示为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]
Run Code Online (Sandbox Code Playgroud)
这就是我要找的东西:
[Item1.Titel] [Item2.Titel] [Item3.Titel]
[Item1.Value1] [Item2.Value1] [Item3.Value1]
[Item1.Value2] [Item2.Value2] [Item3.Value2]
[Item1.Value3] [Item2.Value3] [Item3.Value3]
Run Code Online (Sandbox Code Playgroud)
EDIT2:我在这里找到了一个不错的方法: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>
Run Code Online (Sandbox Code Playgroud)
您还必须设置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
},
...
};
Run Code Online (Sandbox Code Playgroud)
一个不太“hacky”的解决方案是修改控件模板以DataGrid
交换行和列。然而,DataGrid
它是一个复杂的控件,修改控件模板可能有点让人不知所措。
这个线程有点旧但也许有人仍然感兴趣...我也在寻找转换WPF DataGrid的方法,最后我在CodePlex上找到了以下开源项目:
希望这可以帮助.
归档时间: |
|
查看次数: |
9579 次 |
最近记录: |