我的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。 如果你能解决我的问题,请提前致谢!
答案 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;