J'ai ma classe enumHelper qui contient ces:Obtenez la valeur Enum <T> Description de
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;
}
et
public static string Description(Enum value)
{
Attribute DescAttribute = LMIGHelper.GetAttribute(value, typeof(DescriptionAttribute));
if (DescAttribute == null)
return value.ToString();
else
return ((DescriptionAttribute)DescAttribute).Description;
}
mon ENUM est quelque chose comme:
public enum OutputType
{
File,
[Description("Data Table")]
DataTable
}
Jusqu'à présent, si bien . Tout le travail précédent bien. Maintenant, je veux ajouter une nouvelle aide pour retourner BindingList>, donc je peux lier un ENUM à un combo en utilisant
BindingList<KeyValuePair<OutputType, string>> list = Enum<OutputType>.GetBindableList();
cbo.datasource=list;
cbo.DisplayMember="Value";
cbo.ValueMember="Key";
Pour que j'ajouté:
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;
}
Mais « Enum.Description (valeur) "n'est même pas en train de compiler: Argument '1': impossible de convertir 'T' en 'System.Enum'
Comment puis-je faire cela? Est-ce que c'est possible?
Merci.
Votre méthode Description est-elle supposée être une méthode d'extension? Si c'est le cas, vous avez manqué le mot-clé this. –
Voir ma réponse à cette question https://stackoverflow.com/questions/6145888/how-to-bind-an-enum-to-a-combobox-control-in-wpf/12430331#12430331 – Nick