2014-02-09 2 views
-1

WPF checkListBox를 사용하고 있습니다. 아래에 주어진 클래스의 모든 속성을 요소에 채우고 싶습니다. 그리고 Person이라는 클래스가 있습니다.CheckListBox itemsSource를 클래스 객체의 모든 속성에 설정하는 방법은 무엇입니까?

namespace MyProject 
{ 
    public class Person 
    { 
     public enum PersonFields 
     { 
      PersonPermission1, 
      PersonPermission2, 
     } 

     bool _personPermission1; 
     bool _personPermission2; 

     public bool PersonPermission1 
     { 
      get 
      { 
       return _personPermission1; 
      } 
      set 
      { 
       if (_personPermission1!= value) 
       { 
        _personPermission1= value; 
       } 
      } 
     } 

     public bool PersonPermission2 
     { 
      get 
      { 
       return _personPermission1; 
      } 
      set 
      { 
       if (_personPermission2!= value) 
       { 
        _personPermission2= value; 
       } 
      } 
     } 
    } 
} 

checkListBox에 속성을 동적으로 채우고 싶습니다. 주어진 이미지에서와 같이. 그래, 내가 가진 내 대답 CheckListBox with dynamic properties

+1

이렇게하면 도움이 될 수 있습니다. http://stackoverflow.com/questions/737151/how-to-get-the-list-of-properties-of-a-class – jwatts1980

+0

수행해야하는 구체적인 이유 이 방법? 보다 일반적인 접근법은'PersonPermission1'과'PersonPermission2' 값을 모두 담을 수있는 유일한 속성을 갖는 것입니다. 그런 다음 ItemsSource를 해당 속성에 바인딩 할 수 있습니다. – har07

+0

다른 사람의 권한을 설정하기 때문에이 작업을 수행합니다. –

답변

0

...

chkListBoxPerson.ItemsSource = typeof(Person).GetProperties(); 
chkListBoxPerson.DisplayMemberPath = "Name"; 

여기 chkListBoxPerson 내 CheckListBox의 이름입니다.

1

난 당신이 정말 모든 속성의 이름을 얻으려면, 당신이이처럼의 목록을 얻을 수 있습니다

typeof(Person).GetTypeInfo().DeclaredProperties.Select(prop => prop.Name).ToList(), 

을 나는 당신이 그 값을 사용할 수 있도록도 일치하는 내부 enum이 발견 대신 :

Enum.GetNames(typeof(Person.PersonFields)); 

두 경우 모두 사용자 작업에 따라 속성 값을 설정하는 데 추가 코드가 필요합니다.

나는 더 나은 접근 권한의 Dictionary을 가지고있을 거라고 생각 :
var personPermissions = new Dictionary<Person.PersonFields, bool> 
{ 
    { Person.PersonFields.PersonPermission1, false }, 
    { Person.PersonFields.PersonPermission2, false } 
} 

는 이제 Dictionary ItemsSource, 디스플레이 Key에 결합하여 체크 박스에 Value을 결합 할 수있다.