ich meine enumHelper Klasse, die diese enthält:die <T> Wert Beschreibung Enum Get
public static IList<T> GetValues()
{
IList<T> list = new List<T>();
foreach (object value in Enum.GetValues(typeof(T)))
{
list.Add((T)value);
}
return list;
}
und
public static string Description(Enum value)
{
Attribute DescAttribute = LMIGHelper.GetAttribute(value, typeof(DescriptionAttribute));
if (DescAttribute == null)
return value.ToString();
else
return ((DescriptionAttribute)DescAttribute).Description;
}
meine Enum ist so etwas wie:
public enum OutputType
{
File,
[Description("Data Table")]
DataTable
}
So weit so gut . Alle vorherigen funktionieren gut. Jetzt möchte ich einen neuen Helfer hinzuzufügen Binding zurückzukehren>, so kann ich jede Enum einem Combo
BindingList<KeyValuePair<OutputType, string>> list = Enum<OutputType>.GetBindableList();
cbo.datasource=list;
cbo.DisplayMember="Value";
cbo.ValueMember="Key";
Für die Verwendung verknüpfe ich hinzugefügt:
public static BindingList<KeyValuePair<T, string>> GetBindingList()
{
BindingList<KeyValuePair<T, string>> list = new BindingList<KeyValuePair<T, string>>();
foreach (T value in Enum<T>.GetValues())
{
string Desc = Enum<T>.Description(value);
list.Add(new KeyValuePair<T, string>(value, Desc));
}
return list;
}
Aber „Enum.Description (Wert) "erstellt nicht einmal: Argument '1': Konvertierung von 'T' nach 'System.Enum' nicht möglich
Wie kann ich das tun? Ist das überhaupt möglich?
Vielen Dank.
Soll Ihre Beschreibungsmethode eine Erweiterungsmethode sein? Wenn ja, haben Sie dieses Schlüsselwort verpasst. –
Siehe meine Antwort auf diese Frage https://stackoverflow.com/questions/6145888/how-to-bind-an-enum-to-a-combobox-control-in-wpf/12430331#12430331 – Nick