动态DataGrid标头

时间:2012-08-10 10:37:54

标签: c# wpf datagrid

我有一个问题,我需要获取列的总数,它定义了总列数。目前我有一个函数,它指示DataGrid.columns上的标题文本。

public static string ColumnHeader1 = Properties.Settings.Default.ColumnHeader1;

public void dataGridHeaders()
    {
        dataGrid.Columns[0].Header = ColumnHeader1;
        dataGrid.Columns[1].Header = ColumnHeader2;
        dataGrid.Columns[2].Header = ColumnHeader3;
        dataGrid.Columns[3].Header = ColumnHeader4;
        dataGrid.Columns[4].Header = ColumnHeader5;
        dataGrid.Columns[5].Header = ColumnHeader6;
        dataGrid.Columns[6].Header = ColumnHeader7;
        dataGrid.Columns[7].Header = ColumnHeader8;
     }

从xml设置文件读入字符串变量。我想要做的是取决于xml文件中有多少字符串描述了运行时将有多少列。或者添加一个int var say ..

public static int totalNumberOfColumns = 8; 

然后迭代循环添加列。

是否有可能采用这些方式?

2 个答案:

答案 0 :(得分:1)

将XML文件中的列标题放入字符串列表

List<string> columnHeaderList = new List<string>();
foreach (string header in XmlColumnList)
    columnHeaderList.Add(header);

其中XmlColumnList是一个保存值的数组。现在添加以下方法,它将添加所有可用的列标题,如rwequired。

private void DataGridHeaders(List<string> headerList)
{
    for (int i = 0; i < headerList.Count; i++)
        dataGrid.Columns[i].Header = headerList[i];
}

我希望这会有所帮助。

答案 1 :(得分:0)

            var xmlSample = @"<DataGridColumnsHeader>
                            <ColumnHeaderText>Name</ColumnHeaderText>
                            <ColumnHeaderText>Country</ColumnHeaderText>
                            <ColumnHeaderText>Phone</ColumnHeaderText>
                          </DataGridColumns>";

        var counter = 0;
        var elementCount = XDocument.Load(new System.IO.StringReader(xmlSample)).XPathSelectElements("//ColumnHeaderText").Count();
        foreach (var element in XDocument.Load(new System.IO.StringReader(xmlSample)).XPathSelectElements("//ColumnHeaderText"))
        {
            dataGrid.Columns[counter].Header = element.Value;
            counter++;
        }

希望这有帮助!