Большая часть элегантности PropertyGrid
заключается в ее простоте. Помимо всего прочего, он предназначен для хорошей игры с Visual Studio, и я ожидаю увидеть его в основном в пользовательских UITypeEditor
s и расширениях, а не в коде приложения.
Предположительно объекты, которые вы прикрепляете к PropertyGrid
, являются классами вашего собственного дизайна? Я обнаружил, что для того, чтобы эффективно использовать сетку свойств, вы должны сильно украшать свои классы и членов с атрибутами.
Вы можете найти некоторую радость в написании собственных подклассов CollectionEditor
(и других типов редакторов) и присоединении их к ученикам с помощью атрибута [Editor]
- если вы можете прикрепить этот атрибут к своим динамическим свойствам, вы принудительное использование определенного редактора.
Единственный способ добавить валидацию к CollectionEditor
- это переопределить метод CreateCollectionForm()
, возвращая экземпляр вашего собственного пользовательского подкласса CollectionEditor.CollectionForm
. Есть шанс, что вы сможете запускать события изменений отсюда.
К сожалению, все, что я могу сделать, это кивнуть и согласиться с утверждением об осуществлении отмены. Возможно, вам придется прибегнуть к «резервному копированию» затронутых объектов с помощью клонирования или сериализации для реализации отмены.
Я видел альтернативы встроенному элементу управления сеткой свойств, но они существуют в основном для предоставления различных визуальных стилей.