设置ItemsSource后,为什么DataGrid对象中没有添加列?

 手机用户2602917255 发布于 2023-02-09 11:23

为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.

1 个回答
  • 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.

    2023-02-09 11:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有