Esta vez no me ha dado tiempo a anticiparme, y el desarrollo me ha pillado sin tener prevista una solución para el rellenado de combos desde objetos de negocio. Intentaré ser rápido:
Aquí va un ejemplo de un artículo donde se desarrolla un combo personalizado que puede ser borrado (
NullableComboBox). Es muy interesante para las relaciones que sean opcionales, pero también nos sirve el ejemplo para ver cómo se conecta el contenido del combo con una IList que contendrá objetos de negocio.
Tenemos dos casos de uso del combo, y con esto que he contado solventamos el primero: rellenar datos desde una colección de objetos de negocio. El segundo es cuando los datos vienen de un enumerado. Para este caso se me ocurre crear una colección de pares KeyValuePair, como un diccionario (quizá con un diccionario mismamente), y vincular como origen de datos las dos propiedades que ofrece, Key y Value. Como el método que nos devuelve esta colección (que debe guardarse en caché, crearse una vez y reutilizarse después) no puede incluirse en el Enum, podemos ponerlo como estático en la clase que principalmente usa el enumerado (en el caso de TratamientoIVA podemos ponerlo en ECliente, por ejemplo).
Como curiosidad os cito también un artículo de
CodeProject (qué buenos artículos hay ahí) sobre un
ImageCombo, que no existe en .net, pero que se implementa muy fácilmente y con mucho provecho (joder, parezco Cervantes).
Y por último, una línea de investigación que dejo abierta: me surge a partir de una
pregunta sobre el formateo y el reconocimiento (parse) de valores de negocio en un textbox (por poner un ejemplo) a través de un enlace a datos (DataBinding). Cubre las dos direcciones, el formateo (sincronización del control con los datos del objeto de negocio) y el parse (actualización del objeto de negocio con los cambios hechos en el control), y es muy interesante para ver cómo formatear números y fechas, cómo comprobar que un número es válido antes de asignarlo al objeto... Como os digo todo esto me surge a partir de una pregunta, hay que tirar del hilo y buscar la documentación necesaria para conocer bien cómo funcionan los eventos Convert (Format y Parse) del Binding, y qué es y cómo funciona un BindingContext.