WPF DataGrid AutoGeneratingColumn事件为所有ColumnDisplayIndex返回-1

时间:2018-12-02 19:46:25

标签: wpf wpfdatagrid

以下代码为每个显示的列返回-1。

有人知道答案吗?我试图使用ColumnDisplayIndexChanged事件。但是它什么也没显示。

i.konuk

private void dg_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            string headername = e.Column.Header.ToString();

            //Cancel the column you don't want to generate
            if (headername == "Occupation")
            {
                e.Cancel = true;
            }

            //update column details when generating
            if (headername == "FirstName")
            {
                e.Column.Header = "First Name";
            }

            //update column details when generating
            if (headername == "LastName")
            {
                e.Column.Header = "Last Name";
            }

            int myin = e.Column.DisplayIndex;

            System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder();
            messageBoxCS.AppendFormat("{0} = {1}", "Column", myin);
            messageBoxCS.AppendLine();
            MessageBox.Show(messageBoxCS.ToString(), "DataGridAutoGeneratingColumnEvent");

        }

1 个答案:

答案 0 :(得分:2)

AutoGeneratingColumn事件是在自动生成单个列时发生的,换句话说,当列在dataGrid中形成时将调用该事件。这意味着尚未显示任何列。

DataGridColumn.DisplayIndex属性显示列在DataGrid中的位置。我们尚未在AutoGeneratingColumn事件中显示列。在将DisplayIndex属性添加到DataGrid.Columns集合之前,其默认值为-1。 这就是为什么要获得默认值-1的原因。

ColumnDisplayIndexChanged当您选择特定列并更改DataGrid中的已付清订单时,将调用事件。

希望我已经回答了您的问题!