Я использую PropertyGrid для отображения пользовательских свойств, которые отображаются через реализацию ICustomTypeDescriptor.Курсивный текст в PropertyGrid
Мои объекты настроены в древовидной структуре, а значения для каждого свойства либо задаются в каждом объекте, либо унаследованы от родительских объектов. В PropertyGrid я хочу визуально показать пользователю, какие значения свойств заданы в выбранном объекте и которые наследуются от родительских объектов.
Прямо сейчас я показываю каждому свойству две категории. Один набор показывает, какое значение задано в фактическом объекте, с пустым полем, если оно не установлено. В другом наборе отображаются значения свойств, назначенные объекту, которые либо заданы в объекте, либо унаследованы, если они не заданы в объекте.
Я хотел бы объединить эти две группы в одну покупку, показывающую заданные свойства в обычном тексте и унаследованные значения в курсивном тексте. Тем не менее, похоже, нет никакого способа сделать это через ICustomTypeDescriptor.GetProperties(). И у меня нет простого доступа к свойствам PropertyGrid, поскольку они создаются во время работы программы.
Итак, если PropertyDescriptor возвращает true для ShouldSerialize(), свойство будет выделено жирным шрифтом? Это не истинное намерение этого метода? Если я уже сериализую эти объекты с помощью DataContractSerializer, то возится с этим методом, рискует изменить способ, которым мои объекты также сериализуются? –
Это зависит ... XmlSerializer (но не, AFAIL, DataContractSerializer) распознает шаблон по имени, но не использует PropertyDescriptor. Если вы используете дескрипторы времени выполнения (а не public 'bool ShouldSerialize *()", тогда вам все будет в порядке. Но до вас ... –