2009-12-02 3 views

답변

1

바인딩 names (분명히 객체하지 않은) 네임 스페이스가 아닌 열거에서 모든 클래스 만 혼합 발견 데이터 바인딩을 사용하려고했습니다 당신 ComboBox :

이 이
+0

간단한 – Maciek

-1

이 몰라

var names = Enum.GetNames(typeof(Protocol)); 
WPF에 대한 것이 아니라 webforms (MVP를 사용하고 있기 때문에)에서 List>를 ddl에 바인드합니다.

롤 생각했을 것이다 사람과
public static class EnumExtensions 
    { 
     public static string ToDescription(this Enum en) 
     { 
      Type type = en.GetType(); 

      MemberInfo[] memInfo = type.GetMember(en.ToString()); 

      if (memInfo != null && memInfo.Length > 0) 
      { 
       object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute),false); 

       if (attrs != null && attrs.Length > 0) 

        return ((DescriptionAttribute)attrs[0]).Description; 
      } 

      return en.ToString(); 
     } 

     public static TEnum NumberToEnum<TEnum>(int number) 
     { 
      return (TEnum)Enum.ToObject(typeof(TEnum), number); 
     } 
    } 
+0

왜 다운-뽑혔다 : 여기에 목록을 얻으려면 그것은 열거에 확장 방법을 사용

var pairs = new List<KeyValuePair<string, string>>(); pairs.Add(new KeyValuePair<string, string>("Please Select", String.Empty)); for (int i = 0; i < typeof(DepartmentEnum).GetFields().Length - 1; i++) { DepartmentEnum de = EnumExtensions.NumberToEnum<DepartmentEnum>(i); pairs.Add(new KeyValuePair<string, string>(de.ToDescription(), de.ToString())); } MyView.Departments = pairs; 

몇 가지 코드를 무엇입니까? 나는 정말로 알고 싶다. – epitka

+0

OP는 콤보 상자에 열거 형에 정의 된 이름을 채 웁니다. 솔루션은 리플렉션을 사용하여 enum에 대한 사용자 정의 설명 속성을 찾고 대신 바인딩합니다. 유용 할 수도 있지만 OP가 원하는 것이 아닙니다. –

+0

질문에서 정보를 추출하는 방법은 저 밖에 있습니다. 그는 말합니다 : "콤보 박스는 사전 정의 된 값 세트를 표시합니다 -이 경우 enum"입니다. 아무 곳에도 이름 만 있어야한다고 명시하지 않습니다. – epitka

관련 문제