2010-05-25 3 views
2

사용자 컨트롤이 있습니다 ... 그리고이 사용자 컨트롤을 사용하는 기본 페이지에는 사용자 정의 컨트롤에서 사용할 데이터 세트가 있습니다.우리는 WPF의 컨트롤에 동적 데이터 (데이터 세트 또는 목록)를 바인딩 할 수 있습니까

내 데이터 세트는 동적입니다. 수단 ... 내 usercontrol이 구현 된 페이지에 따라 다른 수의 열을 가질 수 있습니다. wpf에서 열 데이터를 모르는 채이 데이터 집합을 바인딩 할 수있는 컨트롤이 있습니까? 2.0의 DataGrid/gridview와 비슷한 의미입니까?

답변

5

WPF toolkit을 살펴보십시오. 여기에는 요구 사항을 충족하는 그리드가 포함되어 있습니다.

이 툴킷은 Microsoft와 Microsoft Shared Source Initiative (내가 제공 한 링크 참조)의 일부로 만들어졌습니다.

내 Microsoft에서는 지원되지 않으므로 버그가 발생하면 해당 포럼을 사용할 수 있지만 MS 지원에 문의 할 수는 없습니다.

직접 작성하려는 경우 예를 들어 List<T>을 사용하는 코드를 작성하고 일반 유형을 가져 와서 속성을 가져 와서 반복하고, 열 헤더를 작성하고, 모든 항목을 반복합니다. 목록을 작성하고 모든 특성을 작성하십시오.

내가 HTML 테이블에 목록을 작성하는 동안 다시이 코드를 작성, 나는 그것이 유용 희망 :

public void PrintList<T>(List<T> list) 
{ 
    if(null!=list.FirstOrDefault()) 
    { 
     Type t = typeof(list[0]); 
     PropertyInfo[] properties = t.GetProperties(); 

     // properties = list of all properties. 

     print("<table><tr>"); 

     foreach(var property in properties) 
     { 
      // print property title 
      print(string.Format("<th>{0}</th>", property.Name)); 
     } 


     print("</tr>"); 

     foreach(var item in list) 
     { 
      print("<tr>"); 
      foreach(var property in properties) 
      { 
       var propertyValue = t.InvokeMember(property.Name, BindingFlags.GetProperty, null, item, new object[] {}); 
       print(string.Format("<td>{0}</td>", propertyValue)); 
      } 

      print("</tr>"); 
     } 

     print("</table>"); 
    } 
} 
+0

Microsoft에서 WPF 툴킷 .. 내 클라이언트가 ABT verymuch 엄격한이기 때문에 "일 아민하지 타사 제어 ":( – Relativity

관련 문제