> Можно ли использовать PropertyGrid в C# без привязки к property у класса? > Например для отображения XML
Сам грид умеет отображать только свойства классов. Но в принципе можно, если написать свой хитрый проперти-дескриптор и с помощью него уже пихать в грид нужные проперти. Просто может получиться очень геморойно.
>> Можно ли использовать PropertyGrid в C# без привязки к property у класса? >> Например для отображения XML
ВВ>Сам грид умеет отображать только свойства классов. Но в принципе можно, если написать свой хитрый проперти-дескриптор и с помощью него уже пихать в грид нужные проперти. Просто может получиться очень геморойно.
Ну, не стоит человека так сразу пугать.
Можно начать с этой статьи
, и для начала написать свой врапер для XmlNode. Если захочется добавлять/редактировать ChildNodes-ы в том же PropertyGrid, пишем еще одиин врапер — для XmlChildNodes, но с этим точно возни побольше.
Но все в принципе реализуемо, было бы время и желание...
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Вообще я так понял, что человеку нужно отображать данные из XML, а не XmlDom
Хм, логично. Но что значит — отобразить XML в таком случае? Показать его как плоский текст или все же отобразить DOM? Если второе, логично воспользоваться как раз этим самым XmlDom-ом.
> Хм, логично. Но что значит — отобразить XML в таком случае? Показать его как плоский текст или все же отобразить DOM? Если второе, логично воспользоваться как раз этим самым XmlDom-ом.
Нет, просто есть некие данные записанные в XML. Допустим, по каким-то причинам нельзя использовать сериализацию (напр. XML написан по строгой спецификации, которая никак не дружит с XmlSerializer). Нужно эти данные отобразить в виде свойств.
Здравствуйте, Воронков Василий, Вы писали:
>> Хм, логично. Но что значит — отобразить XML в таком случае? Показать его как плоский текст или все же отобразить DOM? Если второе, логично воспользоваться как раз этим самым XmlDom-ом.
ВВ>Нет, просто есть некие данные записанные в XML. Допустим, по каким-то причинам нельзя использовать сериализацию (напр. XML написан по строгой спецификации, которая никак не дружит с XmlSerializer). Нужно эти данные отобразить в виде свойств.
А зачем для сериализации XmlDom использовать XmlSerializer, не достаточно XmlDocument.Save?
Посмотри — в PropertyGrid-е мы фактически редактируем сам XmlDocument, а для сериализации просто вызываем XmlDocument.Save.
Что то мы не в ту степь заехали.
Давай все же ответ на первоначальный вопрос сформулируем: Использовать PropertyGrid "без привязки к property класса" нельзя. Если все же очень хочется, то можно написать свой ICustomTypeDescriptor, который будет на основе исходных данных формировать список "виртуальных" property для показа/редактирования в PropertyGrid-е. Вопрос о сложности реализации оставим на совести "реализатора"
Так пойдет?
> А зачем для сериализации XmlDom использовать XmlSerializer, не достаточно XmlDocument.Save? > Посмотри — в PropertyGrid-е мы фактически редактируем сам XmlDocument, а для сериализации просто вызываем XmlDocument.Save.
Что-то тебя зациклило на XmlDom Посмотри первое сообщение, о нем вообще речи нет. Просто есть подозрение, что человек мог бы добиться того, чего его нужно, просто сериализовав свой класс.
> Что то мы не в ту степь заехали. > Давай все же ответ на первоначальный вопрос сформулируем: Использовать PropertyGrid "без привязки к property класса" нельзя. Если все же очень хочется, то можно написать свой ICustomTypeDescriptor, который будет на основе исходных данных формировать список "виртуальных" property для показа/редактирования в PropertyGrid-е. Вопрос о сложности реализации оставим на совести "реализатора" > Так пойдет?
Да, при приведенной выше постановке задачи это единственный вариант.