Έχω ένα ListBox, στο οποίο θέτω σαν data source μια λίστα από αντικείμενα, και θέτω στο DisplayMember το όνομα του property (που λέγεται π.χ. LineText) που θέλω να φαίνεται μέσα στο ListBox. Ορίζω επίσης το event LineTextChanged, το οποίο πυροδοτεί ο setter του property.
Όλα καλά έως εδώ, αλλά... Αν πειράξω μια γραμμή θέτοντας το LineText, το ListBox δεν ενημερώνει τα περιεχόμενά του. Θα περίμενα κάτι τέτοιο, μια που με έχει καλομάθει έτσι το property grid: φτιάξε το property XXX, φτιάξε το event XXXChanged, κάνε το fire στον setter του property, και η αλλαγή θα φανεί στο UI. Φαίνεται όμως ότι τα δύο controls τα έχουν φτιάξει διαφορετικές ομάδες και κάποια από τις δύο ήταν πιο καλή στο σχεδιασμό APIs

Μετά από ψάξιμο, διαπιστώνω ότι υπάρχει η ωραιότατη μέθοδος RefreshItem στο ListBox, η οποία όμως... είναι protected! Γιατί βέβαια να ενημερώσεις το UI του control όταν αλλάζει το περιεχόμενο του data source από πίσω είναι ευαίσθητη λειτουργία και δεν την δίνεις στο public interface!
Οπότε ή φτιάχνω μια κατά τα άλλα άχρηστη κλάση που κληρονομεί από το ListBox μόνο και μόνο για να κάνω public μια protected method, ή την καλώ με Invoke και διατρέχω τον κίνδυνο να μην έχω ReflectionPermission. Τουλάχιστον με τον ένα ή τον άλλο τρόπο θα δουλέψει...
Δεν υπάρχει ερώτηση, απλά το έβγαλα από πάνω μου, και το έμαθε όποιος δεν το ήξερε
Νατάσα Μανουσοπούλου