Frans Bouma wrote a great article about how to create custom collections that can be databound to controls (such as a repeater or datagrid) while giving you maximum power to control specify hidden items, read-only items, and exposing inner structures as databound properties, etc. A great read with an example included.