Вопрос

Я использую PropertyGrid для отображения пользовательских свойств, которые предоставляются посредством реализации ICustomTypeDescriptor.

Мои объекты имеют древовидную структуру, и значения для каждого свойства либо устанавливаются в каждом объекте, либо наследуются от родительских объектов.В PropertyGrid я хочу наглядно показать пользователю, какие значения свойств установлены в выбранном объекте, а какие наследуются от родительских объектов.

Прямо сейчас я показываю каждую недвижимость в двух категориях.Один набор показывает, какое значение установлено в реальном объекте, с пустым полем, если оно не установлено.Другой набор показывает значения свойств, назначенных объекту, которые либо установлены в объекте, либо унаследованы, если они не установлены в объекте.

Я хотел бы объединить эти две группы в одну, показывая свойства набора обычным текстом и наследуемые значения курсивом.Однако, похоже, нет никакого способа сделать это с помощью ICustomTypeDescriptor.GetProperties().И у меня нет простого доступа к свойствам PropertyGrid, поскольку они создаются во время работы программы.

Это было полезно?

Решение

Курсивом писать нельзя, но можно жирным шрифтом;смелое поведение определяется PropertyDescriptor's ShouldSerializeValue;ты можешь обернуть PropertyDescriptorчерез различные System.ComponentModel трюки (ICustomTypeDescriptor, TypeConverter или TypeDescriptionProvider) и предоставить свой собственный PropertyDescriptor.

В качестве альтернативы существуют аналогичные сетки с большим количеством опций, например от VisualHint - см. «Настройка свойств» на этой странице.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top