2011-09-26 158 views
2

我有一個對象集合,每個對象都包含一組名稱 - 值對。所有對象的名稱都是相同的。我想將它們顯示爲數據網格中的列。是否有與ITypedList等價的Silverlight?

在Winforms/WPF中,我會使用ITypedList和一些PropertyDescriptor實例來爲運行時提供一些假屬性。但是這種類型在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執行通知的結合。

相關問題