0

我的 WPF 应用程序中有一个数据网格,并且我将一个 Ienumerable 集合绑定到数据网格的 itemsource。

绑定后,我需要在 DataGrid 中为 AutoGenerated 列添加一个处理程序。但我不能。

this.dataGrid1.ItemsSource = ineumerable_collection;
dataGrid1.AutoGeneratedColumns += new EventHandler(dataGrid1_AutoGeneratedColumns);//Not working

我在 XAML 中将 Autogeneratecolumns 设置为 True。但是当我运行我的应用程序时,它不会调用事件处理程序 dataGrid1_AutoGeneratedColumns。如果您能解决我的问题,请提前致谢!

4

3 回答 3

0

但是当我运行我的应用程序时,它没有调用事件处理程序

您应该首先订阅该事件:

dataGrid1.AutoGeneratedColumns += dataGrid1_AutoGeneratedColumns

然后更改项目来源:

this.dataGrid1.ItemsSource = ineumerable_collection;

因为此事件在ItemsSource更改后引发并且生成了最后一列。

于 2013-01-18T05:43:48.790 回答
0

根据 MSDN:

每次 DataGrid 尝试生成列时都会引发 AutoGeneratedColumns 事件。例如,在初始化 DataGrid、AutoGenerateColumns 设置为 true 或更改 ItemsSource 时引发 AutoGeneratedColumns,即使 ItemsSource 为 null。

在设置 ItemsSource 之前尝试订阅事件。

于 2013-01-18T05:44:01.973 回答
0

问题是您在更改 之后附加了事件处理程序ItemsSource,这意味着在附加处理程序之前生成了列。只需切换两个语句的顺序即可。

dataGrid1.AutoGeneratedColumns += new EventHandler(dataGrid1_AutoGeneratedColumns);
this.dataGrid1.ItemsSource = ineumerable_collection;
于 2013-01-18T05:44:23.177 回答