2012-06-21 7 views
0

몇 시간 전에 질문을 게시했습니다 (http://stackoverflow.com/questions/11134264/c-sharp-add-properties-at-runtime). 새로운 속성으로 기존 클래스를 확장하는 것에 대해 질문했습니다. 그리고, 그건 괜찮 았어. 나는 새로운 propertis를 추가 관리했지만 이제는 dinamically 추가 된 속성을 기반으로 PagedCollectionView에 GroupDescription을 추가해야합니다. 이것은 내가 생성 된 값으로, 새로운 특성 (JobTitle, 위치)을 추가하고, JobTitle 및 위치에 대한 GroupDescriptions을 정의 할 수 dinamically 싶은, 내가 이제 클래스사용자 지정 속성에 바인딩

MyClass 
{ 
    string _name; 
    string _phone; 
} 

을 가지고 있다는 것을 의미한다. JobTitle이 아닌 값으로 - 내가이 키에 그룹 데이터를 기반으로합니다

collection.AddGroupDescription(key); 

을 말하는 경우에 언급 구현 , 난,

Dictionary<string, string> Attributes; 

을 가지고 있지만.

는 Joksimovic에게 감사

+0

처럼? – Stainedart

+0

차이점은 무엇입니까? 아마도 키 - 값 쌍을 갖고 있을까요? – Srecko

+0

직위와 직책을 MyClass 오브젝트에 포함 시키면'collection.AddGroupDescription (jobtitle)'을 가질 수 있고 예상대로 그룹화 될 수 있기 때문에 나는 말하고있다. – Stainedart

답변

0

그래서이 달성의 표준 방법이 왜 당신이 관찰 모음 대신 사전도를 사용하지 않는 다음

MyClass 
{ 
    string _name; 
    string _phone; 
    string _jobTitle; 
    string _position; 
} 


private ObservableCollection<MyClass> collection = //fetch from web service or something 
PagedCollectionView pcv = new PagedCollectionView(collection); 
pcv.GroupDescriptions.Add(new PropertyGroupDescription("JobTitle")); 
DataGrid.ItemsSource = pcv; 
+0

지금은 ...하지만, 문제는 _jobTitle 및/또는 _position 동적으로 추가되어야한다는 것입니다. 클래스에 없기 때문에 클래스를 인스턴스화하는 동안 클래스를 추가해야합니다. 그 후에 모든 것이 당신이 묘사 한 것과 같아야합니다. – Srecko

+0

DataGrid는 여러 원본에 대한 바인딩을 지원하지 않습니다. 가장 좋은 방법은 인스턴스화 할 때 클래스의 2 가지 속성을 동적으로 채우는 것입니다. 이것은 관찰 가능한 수집 항목에 대해 foreach 루프를 사용하여 수행 할 수 있으며 디스플레이는 자동으로 업데이트됩니다. – Stainedart

+0

OK, 지금은 그렇게 하겠지만 다른 해결책이 있어야한다고 생각합니다 :) 요점은 클래스에 이러한 속성이 없기 때문에 클래스 초기화 중에 추가하려고합니다 ... 어쨌든, 감사합니다. 너를 도와 줘. – Srecko

관련 문제