2012-03-20 2 views
0

좋아, 오늘은 더 나은 부분을 위해 머리를 긁어 본 적이있다. Google은 거의 도움이되지 않았고, 동료 프로젝트 메이트도이 문제를 해결하지 못했습니다. 그리고 우리는 마감일로부터 하루도 채 안 남았습니다. 우리 오비 - 하나에 유래 도움말, 당신이있어 우리의 유일한 희망 :WPF의 동적 DataGrid에 데이터 추가

나는 변수 유형의 컬럼의 변수 번호 (DataGridTextColumn, DataGridComboBoxColumn, DataGridCheckBoxColumn)

구성된 데이터 그리드를하고 난 데이터를 바인드해야 그들에게.

각 열은 그리드가 매우 유연해야하는 이유 인 데이터베이스 쿼리를 나타냅니다. 도움이 필요한 것은 코드 숨김 부분에서이 열에 데이터를 바인딩하고 추가하는 것입니다.

편집 일부 열에는 같은 유형의 데이터 (예 : '학년')가 포함됩니다. 이 객체의 하위 유형에 따라 열에 다른 유형이 필요합니다. 따라서 그리드에는 n 개의 열이 있으며 그 중 일부는 동일한 유형의 데이터에 바인딩되어야합니다.

최종 편집

내가 읽은 내가 배열의 다른 인덱스에 열을 바인딩 할 수 없습니다에서 그들이 동적으로 변화하기 때문에 각 열에 대해 하나의 속성을 가진 컨테이너 클래스를 디자인 할 수 없습니다

하고, 내가 가진 마지막 접근 아이디어는 데이터의 유형을 나타내는 문자열 ("checkbox", "string", "combobox")에 다른 열을 바인딩 한 다음 그 이름을 가진 속성을 가진 컨테이너를 각각에 추가하는 것입니다 개별 열. 그리드의 컬럼에서 호출하는 "Add"메소드가 없기 때문에 이것을 수행하는 방법을 찾지 못했습니다! 이 같은

//Create an arbitrary number of columns 
for(int i = 0; i < NR_CHECKBOXES; ++i) { 
    DataGridCheckBoxColumn col = new DataGridCheckBoxColumn(); 
    col.Header = titles[i]; 
    //which are bound to a container with correct type of data 
    col.Binding = new Binding("checkboxes[" + i + "]"); 
    grid.Columns.Add(col); 
} 

grid.Add(checkboxes); //and then populate the grid 

또는 뭔가 : 내가 필요한 희망찬 사고 코드로 요약하면이처럼 보이는 뭔가 체크 박스 재산 '데이터가 객체의 목록입니다

//Create an arbitrary number of columns 
for(int i = 0; i < NR_CHECKBOXES; ++i) { 
    DataGridCheckBoxColumn col = new DataGridCheckBoxColumn(); 
    col.Header = titles[i]; 
    col.Binding = new Binding("Data"); 
    col.Add(checkboxes[i]); //Populate the column specifically 
    grid.Columns.Add(col); 
} 

'(유감스럽게도 스웨덴 키보드를 사용하기 때문에 탭을 누른 다음 $를 눌러이 인라인을 코드화 할 수 없습니다.) 이러한 루프는 각 유형의 열과 데이터 (ComboBoxes 및 TextBoxes)에 대해 복사됩니다.

내 문제를 설명하기에 충분하고 WPF에서이를 달성 할 수있는 적절한 방법을 알고있는 사람이 있기를 바랍니다.

답변

0

데이터 형식을 사용하십시오. 각 쿼리를 특정 형식으로 캐스팅하고 해당 형식에 대한 데이터 형식을 지정합니다. 해당 유형에 대해 원하는 모든 XAML 속성을 추가 할 수 있습니다. WPF는 형식을 기반으로 올바른 템플릿을 선택합니다. 좋아

DataTemplates

+0

는 여전히 나에게 문제를 제공하지 않을까요? 예, 올바른 템플릿을 선택 하겠지만 올바른 유형의 데이터 집합을 선택합니까? – Glader

+0

내 원래 질문을 수정했습니다. – Glader

0

, 나는 당신의 결과 집합은 매우 동적 참조하십시오. 런타임에 DataTemplate을 만들어 원하는 것을 얻을 수 있습니까? 동일한 유형의 여러 열이있을 때

Creating a DataTemplate at runtime

+0

필자는 그렇게 생각하지 않습니다. 최소한 열을 속성에 바인딩해야한다면 (컴파일 타임에 이름을 지정해야합니다). – Glader