如何创建固定列数的DataGrid?

问题描述 投票:0回答:1

我有具有固定列数(5 列)的 DataGrid 控件,它是通过以下代码创建的:

    m_dictionary_data = new DataGrid();
    {
        //  Dictionary data initialization
        {
            //  Columns generation
            m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "Color name", Width = 100 });
            m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "Color", Width = 100 });
            m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "R", Width = 100 });
            m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "G", Width = 100 });
            m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "B", Width = 100 });
        }
    }

我有这样的图片:

此数据网格有额外的右第六列

如何创建具有固定列数的数据网格? (我想删除多余的空列)

编辑:我犯了错误。实际上我的数据网格有 5 列。控制的其余部分只是额外的空间

c# wpf datagrid
1个回答
2
投票

正如“Александр Лысенко”已经提到的,固定数据网格列的宽度是一种方法,但不是最好的方法。我遇到了同样的问题,经过大量搜索后,我从互联网上找到了一个解决方案,这是迄今为止我知道是最著名的解决方案。

您可以将列的宽度定义为百分比。为此,我们可以使用 DataGridLength 对象。

尝试这样的事情。

m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "Color name", Width = new DataGridLength(0.2, DataGridLengthUnitType.Star)});
m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "Color",      Width = new DataGridLength(0.2, DataGridLengthUnitType.Star)});
m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "R",          Width = new DataGridLength(0.2, DataGridLengthUnitType.Star)});
m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "G",          Width = new DataGridLength(0.2, DataGridLengthUnitType.Star)});
m_dictionary_data.Columns.Add(new DataGridTextColumn() { Header = "B",          Width = new DataGridLength(0.2, DataGridLengthUnitType.Star)});

上面的代码将数据网格宽度分成相等的 5 部分,每部分宽度为 20%。您可以调整此百分比,使任何列的宽度都大于其他列的宽度,但总体百分比应计为“1”,以便根据需要除以 100% 的宽度。希望这能解决您的问题。

了解有关 DataGridLength 和 DataGridLengthUnitType 的更多信息

这里是 MSDN 链接

数据网格长度

DataGridLengthUnitType

© www.soinside.com 2019 - 2024. All rights reserved.