【问题标题】:Couldn't invoke EventHandler for AutoGeneratedColumns无法为 AutoGeneratedColumns 调用 EventHandler
【发布时间】:2013-01-18 05:35:58
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# wpf events handler


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      您应该首先订阅该活动:

      dataGrid1.AutoGeneratedColumns += dataGrid1_AutoGeneratedColumns
      

      然后改变项目来源:

      this.dataGrid1.ItemsSource = ineumerable_collection;
      

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

      【讨论】:

        【解决方案3】:

        根据 MSDN:

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

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

        【讨论】:

          猜你喜欢
          • 2014-04-03
          • 2010-12-05
          • 2021-11-27
          • 2011-11-17
          • 1970-01-01
          • 1970-01-01
          • 2012-02-22
          • 2020-08-03
          • 1970-01-01
          相关资源
          最近更新 更多