Ajouter au niveau de la propriété des attributs dynamiquement en utilisant TypeDescriptor PropertyGrid

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

Question

Je veux ajouter des attributs (comme Browsable (false)) de façon dynamique lors de l'affichage de la grille. Le scénario est que j'ai une classe personnalisée avec des propriétés publiques. Cependant, je ne veux pas toutes les propriétés publiques à afficher dans l'interface utilisateur. Y at-il un moyen de sortir?

J'ai essayé d'utiliser TypeDescriptor. Cependant, cela fonctionne seulement au niveau du type et non pas au niveau de la propriété. Je ne pouvais pas trouver d'aide sur la façon de l'utiliser au niveau de la propriété.

Les pointeurs seront très appréciés.

Était-ce utile?

La solution

En fait, il est possible, mais je dois admettre qu'il est assez obscur et mal documenté. La clé est d'obtenir votre propre TypeDescriptorProvider personnalisé à partir System.ComponentModel.TypeDescriptionProvider. Ensuite, vous pouvez retourner votre propre descendant TypeDescriptor.

Je l'ai fait de fixer une limitation plutôt désagréable en ce qui concerne ViewModels et métadonnées dans ASP.NET MVC, mais vous pouvez tout aussi bien l'utiliser pour insérer vos propres métadonnées supplémentaires.

Autres conseils

Je travaille dans ce même secteur depuis quelques jours. Longue histoire courte, je suis venu à la conclusion cela est impossible.

La raison pour laquelle vous essayez d'appliquer des attributs à l'exécution parce que vous ne voulez pas mélanger le code « interface utilisateur » avec vos classes personnalisées?

Si tel est le cas, le BrowsableAttribute est membre du ComponentModel (

scroll top