Ошибка в WPF DataGrid после обновления до .NET 4.0 - PullRequest
1 голос
/ 22 сентября 2010

Ситуация следующая:
DataGrid имеет RowDetailsTemplate, который содержит другой DataGrid (подсетка). Если вы добавите DataGridTemplateColumn, который содержит EventHandler, PresentationFramework.dll создает NullReferenceException.

Эта проблема присутствует только в .NET 4.0 . Если проект нацелен на .NET 3.5 (и использует WPFToolkit для компонента DataGrid), все работает как положено.

Я приложил небольшой пример проекта, который воспроизводит эту ошибку. В проекте есть файл README, который снова объясняет проблему и показывает трассировку стека исключения. (пример проекта можно найти здесь )

Шаги для воспроизведения:
1. Запустите пример проекта как есть.
2. Попробуйте ссылку «Удалить меня» в первой строке таблицы и убедитесь, что она отображает сообщение.
3. Щелкните ячейку «ПОКАЗАТЬ» в первом столбце и убедитесь, что в ней отображается подсетка с одним элементом.
4. Попробуйте ссылку «Удалить меня» в подсетке, убедитесь, что она ничего не делает (она не связана в коде).
5. Закройте окно и перейдите к MainWindow.xaml
6. Подключите событие Hyperlink.Click в MainWindow.xaml в строке 36: добавьте Click = "HyperlinkClick" в тег Hyperlink.
7. Запустите проект еще раз и нажмите «ПОКАЗАТЬ» в первом столбце: генерируется исключение NullReferenceException!

Это перекрестное от https://connect.microsoft.com/VisualStudio/feedback/details/603333/wpf-datagrid-rowdetails-add-2nd-datagrid-to-rowdetailstemplate-with-eventhandlers#details, но для меня это проблема блокировки.

Итак, проблема в том, почему это происходит? Я думаю, что это ошибка в коде PresentationFramework, но я не уверен на 100%. Что я могу сделать, чтобы EventHandler работал как положено?

Я нашел временный обходной путь, позволив пользователю нажать клавишу удаления, но это нарушает поведение нашего приложения.
Есть ли кто-нибудь, кто может воспроизвести и прокомментировать эту проблему?

1 Ответ

0 голосов
/ 17 ноября 2011

У меня была похожая проблема, которая, казалось, имела какое-то отношение к CanUserAddRows = "True" ... если я установил значение false, проблема исчезнет.

...