J'ai hérité de la classe PropertyDescriptor
pour fournir des propriétés 'dynamiques'. J'ajoute quelques attributs au PropertyDescriptor. Cela fonctionne parfaitement.PropertyDescriptor et attributs
Lors de l'affichage d'un objet dans un PropertyGrid
, le ReadOnlyAttribute
fonctionne, mais le EditorAttribute
ne fonctionne pas!
internal class ParameterDescriptor: PropertyDescriptor {
//...
public ParameterDescriptor(/* ... */) {
List<Attribute> a = new List<Attribute>();
string editor = "System.ComponentModel.Design.MultilineStringEditor,System.Design";
//...
a.Add(new ReadOnlyAttribute(true)); // works
a.Add(new DescriptionAttribute("text")); // works
a.Add(new EditorAttribute(editor, typeof(UITypeEditor))); // doesn't work!
//...
this.AttributeArray = a.ToArray();
}
}
L'objet qui est affiché utilise un TypeConverter
hérité:
public class ParameterBoxTypeConverter: TypeConverter {
public override bool GetPropertiesSupported(ITypeDescriptorContext context) {
return true;
}
public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes) {
List<PropertyDescriptor> desc = new List<PropertyDescriptor>();
//...
ParameterDescriptor d = new ParameterDescriptor(/* ... */);
desc.Add(d);
//....
return new PropertyDescriptorCollection(desc.ToArray());
}
Je suis coincé, parce que le PropertyGrid
est tout simplement pas rien montrer (je me attendais à un « ... » à la propriété valeur). Et il semble qu'il n'y a aucun moyen de déboguer!
Alors, comment puis-je trouver ce qui ne va pas ici?
Existe-t-il un moyen de déboguer dans le PropertyGrid, etc?
Vous ne montrez pas ce que vous * faites * avec * a' ... passez-vous cela dans le ctor de base? ou...? –
@MarcGravell: S'il vous plaît voir mon édition. – joe