2017-08-19 13 views
0

Je souhaite avoir une sélection déroulante pour une propriété personnalisée sur un contrôle utilisateur dans WPF. Tout fonctionne très bien quand j'utilise un Enum comme la propriété:Propriétés personnalisées du concepteur WPF - menu déroulant

/// <summary> 
/// Interaction logic for Sample.xaml 
/// </summary> 
public partial class Sample : System.Windows.Controls.UserControl 
{ 
    public Sample() 
    { 
     InitializeComponent(); 
    } 

    [DefaultValue(Letters.A)] 
    [Browsable(true)] 
    [Category("ControlDisplay")] 
    [Description("Letter")] 
    public Letters Letter { get; set; } 


    public enum Letters 
    { 
     A, 
     B, 
     C, 
     D 
    } 
} 

enter image description here

:) Impressionnant.

Mais je veux réaliser ceci pour une classe faite sur commande ou même une chaîne. Comment dois-je faire?

Merci d'avance.

Répondre

0

Enfin obtenu l'anwser (après avoir creusé de la documentation - beaucoup de celui-ci). Tout d'abord, il y a Type Converter atribute puis une belle marche à suivre pour l'implémenter est here. This est ce qui m'a conduit à cela.

En bref: Mettre en oeuvre un convertisseur de type GetStandardValuesSupported(ITypeDescriptorContext context) pour retourner vrai et GetStandardValues(ITypeDescriptorContext context) pour retourner le StandardValuesCollection pour le type de propriété. Enfin décorer la propriété comme ceci:

[TypeConverter(typeof(MyClassConverter))] 
    public MyClass MyProperty { get; set; } 

La fenêtre de propriété concepteur désormais un menu déroulant avec des valeurs valides.