2

DataGridリンクしていDataTableます。

この DataGrid に、コード ビハインドに自分で 3 つの列を追加します。

if (resultDataGrid.ItemsSource != null)
            {
                List<String> resColList = new List<String> { "Solde M.O", "Solde Deplacement", "Solde Pieces" };

                foreach (string cName in resColList)
                {
                    DataGridTextColumn column = new DataGridTextColumn();
                    column.Header = cName.ToUpper();
                    column.Binding = new Binding(cName.ToUpper());
                    resultDataGrid.Columns.Add(column);
                }
            }

DataGrid19 列を含むthis の列のインデックスを再作成したかったのですが、列をカウントすると、 as を取得したDataGrid場合でも、コード ビハインドに追加された 3 列しかカウントされないという問題があります。DataGridDataTableItemSource

 if (_tableCase.Rows.Count > 0)
            {
                resultDataGrid.ItemsSource = _tableCase.AsDataView();
                createResultColumn();
                setColumnIndex(); //This is the fonction which set the new index.
            }
            else
                resultDataGrid.ItemsSource = null;

            MessageBox.Show(resultDataGrid.Columns.Count.ToString()); //this return 3 first run and then 31 if I change the filter.

 for (int i = 0; i < resultDataGrid.Columns.Count; ++i) // Only display the 3 column added in the code behind.
                MessageBox.Show(resultDataGrid.Columns[i].Header.ToString());

しかし、アプリケーションで から行を表示するフィルターを変更するとDataTableDataGrid列数が 31 を返します。

私が見逃したことについて誰か説明がありますか?何時間もデバッグした後、何も出てこなかったからです。

4

1 に答える 1

3

ドキュメントには次のように記載されています。

Automatically generated columns are not added to the Columns collection.

したがって、これは正常な動作です。

于 2013-07-05T08:06:40.693 に答える