Курсивный текст в PropertyGrid
-
09-09-2019 - |
Вопрос
Я использую PropertyGrid для отображения пользовательских свойств, которые предоставляются посредством реализации ICustomTypeDescriptor.
Мои объекты имеют древовидную структуру, и значения для каждого свойства либо устанавливаются в каждом объекте, либо наследуются от родительских объектов.В PropertyGrid я хочу наглядно показать пользователю, какие значения свойств установлены в выбранном объекте, а какие наследуются от родительских объектов.
Прямо сейчас я показываю каждую недвижимость в двух категориях.Один набор показывает, какое значение установлено в реальном объекте, с пустым полем, если оно не установлено.Другой набор показывает значения свойств, назначенных объекту, которые либо установлены в объекте, либо унаследованы, если они не установлены в объекте.
Я хотел бы объединить эти две группы в одну, показывая свойства набора обычным текстом и наследуемые значения курсивом.Однако, похоже, нет никакого способа сделать это с помощью ICustomTypeDescriptor.GetProperties().И у меня нет простого доступа к свойствам PropertyGrid, поскольку они создаются во время работы программы.
Решение
Курсивом писать нельзя, но можно жирным шрифтом;смелое поведение определяется PropertyDescriptor
's ShouldSerializeValue
;ты можешь обернуть PropertyDescriptor
через различные System.ComponentModel
трюки (ICustomTypeDescriptor
, TypeConverter
или TypeDescriptionProvider
) и предоставить свой собственный PropertyDescriptor
.
В качестве альтернативы существуют аналогичные сетки с большим количеством опций, например от VisualHint - см. «Настройка свойств» на этой странице.