2011-09-26 1 views
2

개체 컬렉션이 있는데 각 개체는 일련의 이름 - 값 쌍을 보유합니다. 이름은 모든 객체에서 동일합니다. 데이터 그리드의 열로 표시하고 싶습니다.ITypedList에 해당하는 Silverlight가 있습니까?

Winforms/WPF에서 런타임에 가짜 속성을 제공하기 위해 PropertyDescriptor 인스턴스와 함께 ITypedList을 사용하고 싶습니다. 그러나이 유형은 Silverlight에서 사용할 수없는 것 같습니다.

그래서 대안이 있습니까? 아니면 Silverlight에 존재하지 않습니까?

편집 프레임 몇 가지 코드를 추가 시나리오 더 나은

public class Cell { 
    public string Name { get; private set; } 
    public string Value { get; private set; } 
} 

public class Row { 
    public IEnumerable<Cell> Cells { get; private set; } 
} 

public class ViewModel { 
    public IEnumerable<Row> Rows { get; private set; } 
} 

<sdk:DataGrid ItemsSource="{Binding Rows}" /> 

내가 일을하고 DataGrid을 채우는 행/셀 조회를 얻을 수있는 방법은? 특히 나는 그리드가 Rows 속성이 변경되면 바인딩을 통해 업데이트 할 (가 변경 이벤트를 발생한다고 가정 바인딩 응답합니다.) 나는 바인딩 및 문자열을 사용하여이 문제를 해결할 수 있었다 결국

답변

1

인덱서.

public class Row { 
    public RowData Data { get; private set; } 
} 

public class RowData { 
    public string this[string name] { 
     get { return ...; } 
    } 
} 

수동으로 그리드 열을 구축 :

foreach (var column in Columns) 
{ 
    _grid.Columns.Add(new DataGridTextColumn 
    { 
     Binding = new Binding(string.Format("Data[{0}]", column.Name)), 
     Header = column.Name, 
     IsReadOnly = true 
    }); 
} 

이것은 내 경우 전체 Data 속성이 교체 되었기 때문에 데이터가 자동으로 업데이트 및 INotifyPropertyChanged 바인딩을 알리기 위해 구현 것을 의미했다.