Я пытаюсь редактировать сложные объекты в элементе управления PropertyGrid. Я добавляю ExpandableObjectConverter (или мой собственный подкласс, когда мне это нужно) в качестве TypeConverter, и он отлично работает.
Единственное, что я не могу понять, это это. Сам объект будет иметь свое представление .ToString () рядом с ним в Grid. Затем, когда я раскрываю объект, атрибуты совпадают. Все можно редактировать. Я хочу отключить редактирование поля объекта ToString (), но оставить атрибуты доступными для редактирования.
Так что в PropertyGrid это будет выглядеть так:
+ Color {(R,G,B,A) = (255,255,255,255)} --uneditable
Alpha 255 --editable
Blue 255 --editable
Green 255 --editable
Red 255 --editable
Пока я не нашел способ сделать это. Если я попытаюсь сделать это ReadOnly, весь объект станет доступным только для чтения. Если я укажу свой собственный ExpandableObjectConverter и укажу, что он не может преобразовать строку, то если строка отредактирована в PropertyGrid, она все равно попытается привести к приведению, а затем потерпит неудачу.
По сути, я просто хочу, чтобы я мог запретить конечным пользователям редактировать строку и заставлять их редактировать отдельные атрибуты, чтобы мне не приходилось писать анализатор строк для каждого отдельного класса.
Возможно ли это, или есть другой способ сделать это, о котором я просто не думал?