2017-08-19 2 views
0

Ich möchte eine Dropdown-Auswahl für eine benutzerdefinierte Eigenschaft auf einem Benutzersteuerelement in WPF haben. Alles funktioniert gut, wenn ich eine Enum als Eigentum verwenden:WPF-Designer benutzerdefinierte Eigenschaften - Dropdown

/// <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

Super :).

Aber ich möchte dies für eine benutzerdefinierte Klasse oder sogar eine Zeichenfolge erreichen. Wie soll ich es tun?

Vielen Dank im Voraus.

Antwort

0

Endlich bekam ich den anwser (nach dem Graben von einigen Unterlagen - eine Menge davon). Zuerst gibt es die Type Converter atribute dann ein schöner Spaziergang, wie es zu implementieren ist here. This hat mich dazu geführt.

Auf den Punkt gebracht: einen Typkonverter Implementieren GetStandardValuesSupported(ITypeDescriptorContext context) true zurück und GetStandardValues(ITypeDescriptorContext context) die StandardValuesCollection für den Objekttyp zurück. Schließlich schmücken nur die Eigenschaft wie folgt:

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

Der Designer Eigenschaftsfenster jetzt ein Dropdown mit gültigen Werten haben.

Verwandte Themen