Примеры ObjectListView (WinForms): список сотрудников, дерево файловой системы

Проект с небольшими примерами использования ObjectListView — удобная и более продвинутая замена стандартных списков и Tree View для винформс.

Пока делал два года назад даже наткнулся на баг: ObjectListView / Discussion / Open Discussion: [Bug] Removed objects remain in TreeListView CheckedObjects (пока не исправлен)

Единственный минус библиотеки — автор не выложил её на какой-нибудь гитхаб, а на сорсфорже вроде бы нет возможности удобно отправлять исправления/доработки (+ SVN вместо Git), что добавляет значительный барьер для желающих помочь. :frowning:


            colString.AspectToStringConverter = val =>
            {

            };

Как обратиться к экземпляру, который это вызвал?

Ну там же рядом наверно лежит переменная с экземпляром? По ней и обратиться )

Где же она лежит? :man_shrugging: Она нигде не лежит.
Туда же свойство экземпляра приходит, а не сам экземпляр.
Видимо, в классе модели можно создать свойство public StreamItem Self => this; и его передавать в AspectName :thinking:

Не обязательно внутри этого колбека, можно и снаружи, в функции, где этот код находится.

А как тогда в колбэке узнать, что это именно от него пришло? Там же в каждом айтеме свой экземпляр.

А, я думал про компонент на форме речь.

А зачем узнавать это? Оно по идее должно только превращать значение в строку для отображения. Например, число форматировать.

Если надпись в ячейке зависит от другого свойства экземпляра.
Например, если enabled == true, то выводим значение из val. Иначе, выводим что-то другое типа Отключено.

Можно просто в модели это всё делать. Например, возвращать null в этом случае, и его использовать в AspectToStringConverter.

Может пригодиться: http://objectlistview.sourceforge.net/cs/recipes.html#can-i-get-rid-of-the-refreshobject-calls