1

情况如下:
一个DataGrid 有一个RowDetailsTemplate,其中包含另一个DataGrid(子网格)。如果添加包含 EventHandler 的 DataGridTemplateColumn,NullReferenceException则 PresentationFramework.dll 会抛出 a。

此问题仅存在于 .NET 4.0中。如果项目以 .NET 3.5 为目标(并将 WPFToolkit 用于 DataGrid 组件),则一切正常。

我附上了一个重现此错误的小示例项目。项目中有一个 README 文件,它再次解释了问题并显示了异常的堆栈跟踪。(示例项目可以在这里找到)

重现步骤:
1. 按原样运行示例项目。
2. 尝试网格第一行中的“删除我”链接,确认它显示了一条消息。
3. 单击第一列中的“显示”单元格,并确认它显示了一个包含一个项目的子网格。
4. 尝试子网格中的“删除我”链接,确认它什么都不做。(它没有在代码中连接)。
5. 关闭窗口并转到 MainWindow.xaml
6. 在 MainWindow.xaml 第 36 行连接 Hyperlink.Click 事件:将 Click="HyperlinkClick" 添加到 Hyperlink 标记。
7. 再次运行项目,点击第一列的“SHOW”:抛出 NullReferenceException!

这是从https://connect.microsoft.com/VisualStudio/feedback/details/603333/wpf-datagrid-rowdetails-add-2nd-datagrid-to-rowdetailstemplate-with-eventhandlers#details交叉发布的,但这是一个阻塞问题为了我。

所以问题是:为什么会这样?我认为这是 PresentationFramework 代码中的一个错误,但我不能 100% 确定。我该怎么做才能使 EventHandler 按预期工作?

我通过允许用户按下删除键找到了一个临时解决方法,但这会破坏我们应用程序的行为。
有没有人可以复制和评论这个问题?

4

1 回答 1

0

我有一个类似的问题,似乎与 CanUserAddRows="True" ...如果我将其设置为 false,问题就会消失。

于 2011-11-16T23:54:35.060 回答