关于C#:如何将枚举绑定到列表框?

How do I bind an enum to my listbox?

我有一个Silverlight(WP7)项目,希望将枚举绑定到列表框。这是一个具有自定义值的枚举,位于类库中。我该怎么做?


在Silverlight(WP7)中,Enum.GetNames()方法不可用。您可以使用以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Enum<T>
{
    public static IEnumerable<string> GetNames()
    {
        var type = typeof(T);
        if (!type.IsEnum)
            throw new ArgumentException("Type '" + type.Name +"' is not an enum");

        return (
          from field in type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static)
          where field.IsLiteral
          select field.Name).ToList<string>();
    }
}

静态方法将返回可枚举字符串集合。可以将其绑定到列表框的itemsource。喜欢

1
this.listBox1.ItemSource = Enum<Colors>.GetNames();


使用转换器执行此操作。请参阅http://geekswithblogs.net/cskardon/archive/2008/10/16/databinding-an-enum-in-wpf.aspx。


将枚举转换为一个列表(或类似的列表)-根据如何将枚举转换为C中的列表?

然后绑定到转换后的列表。