无法为AutoGeneratedColumns调用EventHandler

时间:2013-01-18 05:35:58

标签: c# wpf events handler

我的WPF应用程序中有一个datagrid,我将一个Ienumerable集合绑定到datagrid的itemsource。

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

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

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

3 个答案:

答案 0 :(得分:0)

  

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

您应首先订阅该活动:

dataGrid1.AutoGeneratedColumns += dataGrid1_AutoGeneratedColumns

然后更改项目来源:

this.dataGrid1.ItemsSource = ineumerable_collection;

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

答案 1 :(得分:0)

根据MSDN:

  

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

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

答案 2 :(得分:0)

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

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