2013-06-29 5 views

답변

3

쉬운 바인딩입니다. 유일한 문제는 Windows Phone에서 확장 방법 GetNames()을 사용할 수 없다는 것입니다. 그러나, 당신은 하나를 쓸 수 있습니다.

public static class EnumExtensions { 
    public static IEnumerable<string> GetNames<TEnum>() where TEnum : struct { 
    var type = typeof(TEnum); 
    if (!type.IsEnum) 
     throw new ArgumentException(String.Format("Type '{0}' is not an enum", type.Name)); 

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

일단 모든 목록에 바인딩하는 것이 쉽습니다.

public enum MyEnum { 
    v1, v2, v3 
} 

// Binding 
myListPicker.ItemsSource = EnumExtensions.GetNames<MyEnum>(); 

// Getting selected value 
var myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), myListPicker.SelectedItem.ToString());