为DataGrid对象设置ItemsSource后,没有列 - 但为什么?
例:
class Record { string C1 { get; set; } public Record(string c1) { this.C1 = c1; } } private void BuildDataGrid() { var records = new Record[] {new Record("foo")}; var dataGrid = new DataGrid(); dataGrid.ItemsSource = records; // dataGrid.Columns.Count delivers 0 }
更新:即使有public
类和属性的访问器,问题仍然存在.
更新2:dataGrid.AutoGenerateColumns = true
在指定之前使用set ItemsSource
也没有帮助.
令人兴奋的是,当我显示dataGrid
对象时,列将显示在窗口中!但列数(如上所示)仍为0.
DataGrid内部generate columns for all public properties exposed by underlying
object
.
所以你需要C1 property public
在课堂上制作
public string C1 { get; set; }
更新了列数设置为0的原因.
除非自动生成列,否则列数将为0.通过挂钩事件生成后,您可以检查列计数AutoGeneratedColumns
.只有在UI上呈现列数才会更新.
dataGrid.AutoGeneratedColumns += (s,e) => { int count = dataGrid.Columns.Count; dataGrid.Columns[0].Header = "New Header Name"; };
此列数将为1.