Наше Вам...
Перерыл форум — ответа не нашёл... Вопрос такой: как заставить DataGrid отображать содержимое коллекции? Ктонить с этим таки разобралси?
По умолчанию эта вредина отображает лишь public property элемента коллекции. В моем случае — элемент коллекции (ЭК) — другая коллекция (да-да.. так всё запущено

). Вроде намечался выход с реализацией ICustomTypeDescriptor для ЭК. В смысле, по ICustomTypeDescriptor.GetProperties() возвращать свою коллекцию... Взял за основу пример из "Конфигурирование .NET-приложений" — переделал под свои нужды. PropertyGrid работает замечательно — DataGrid нет... Осчусчение такое, что DataGrid ложит на ICustomTypeDescriptor балшой девайс. Тем не менее стал ругаться на то, что не может найти public property "Count"

. Т.е. вроде как берёт всё же мою коллекцию пропертей (в ней Count'а нет)... Но тогда непонятно, откуда он его (Count) выкопал?!
В общем, буду весьма признателен за инфу какие именно в кастомной коллекции нужно реализивывать интерфейсы для того чтобы DataGrid её валидно отображал.
---
С уважением, Сиваков Константин.
23.12.03 18:25: Перенесено модератором из '.NET' — AVK
G>В общем, буду весьма признателен за инфу какие именно в кастомной коллекции нужно реализивывать интерфейсы для того чтобы DataGrid её валидно отображал.
DataGrid строит колонки не на основе свойств Datasource-коллекции, а на основе свойств её членов.
Например, напихай в массив или ArrayList Button'ов — и будешь видеть колонки по свойствами класса Button.
Насколько я понял, DataGrid всегда анализирует только первый элемент коллекции и хочет, чтобы у всех последующих были такие же.
P.S. Кстати, не ICollection а IList требуется для DataGrid.
... << RSDN@Home 1.0 beta 6a >>
Здравствуйте, mihailik, Вы писали:
G>>В общем, буду весьма признателен за инфу какие именно в кастомной коллекции нужно реализивывать интерфейсы для того чтобы DataGrid её валидно отображал.
M>DataGrid строит колонки не на основе свойств Datasource-коллекции, а на основе свойств её членов.
Так и есть... Есть коллекция (К1) — которая выступает в роли DataSourc'а. Каждый элемент этой коллекции — тоже коллекция (K2) — "свойства" которой и нужно отобразить. DataGrid — по умолчанию — отображает мне свойство Count от К2
M>Насколько я понял, DataGrid всегда анализирует только первый элемент коллекции и хочет, чтобы у всех последующих были такие же.
Дык и ето тоже есть... K2 коллекции содержат одинаковое кол-во элементов одного типа. Я хочу сделаь так, что бы проперти K2 коллекции подменялись на сгенерированную мной PropertyDecriptorsCollection — построенную на основе значений свойств элементов K2.
M>P.S. Кстати, не ICollection а IList требуется для DataGrid.
Это не важно, т.к. CollectionBase реализует их оба. Плюс IEnumerable в придачу.
Вопрос всё ещё открыт...
Ктонить вкурсе насчёт функциональной нагрузки IBindingList? Его реализация, как советуют на GotDotNet, результата не пренесла
PropertyGrid по прежнемy работает как надо.
---
С уважением Сиваков Константин
Добрый день.
Удалось ли решить эту проблему и если да то как ?