Añadir propiedad a nivel de atributos dinámicamente usando TypeDescriptor para PropertyGrid

StackOverflow https://stackoverflow.com/questions/1300324

Pregunta

Quiero añadir atributos (como navegable (falso)) de forma dinámica mientras se muestra en la cuadrícula. Escenario es que tengo una clase personalizada con algunas propiedades públicas. Sin embargo, no quiero todas las propiedades públicas que se mostrará en la interfaz de usuario. ¿Hay una salida?

He intentado utilizar TypeDescriptor. Sin embargo, sólo funciona en el nivel de tipo y no a nivel de propiedad. No pude encontrar ninguna ayuda sobre cómo utilizarlo en la propiedad de nivel.

Cualquier punteros serán muy apreciados.

¿Fue útil?

Solución

En realidad, es posible, pero tengo que admitir que es bastante oscura y mal documentado. La clave es obtener su propio TypeDescriptorProvider personalizado desde System.ComponentModel.TypeDescriptionProvider. A continuación, puede volver a su propio descendiente TypeDescriptor.

Lo hice para fijar una limitación bastante desagradable con respecto ViewModels y metadatos en ASP.NET MVC, pero se puede del mismo modo que lo utilizan para insertar su propio metadatos adicionales.

Otros consejos

He estado trabajando en esta misma zona durante los últimos días. Para acortar una larga historia, llegué a la conclusión de que esto no es posible.

Es la razón por la que está intentando aplicar atributos en tiempo de ejecución, ya que no quiere mezclar código "interfaz de usuario" con las clases personalizadas?

Si ese es el caso, el BrowsableAttribute es un miembro de la ComponentModel ( http://msdn.microsoft.com/en-us/library/system.componentmodel.aspx ) y no está relacionada con la interfaz de usuario en el mismo sentido que WinForms.

Karl

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top