我有一组对象,每个对象都包含一组名称 - 值对。所有对象的名称都相同。我想将它们显示为数据网格中的列。
在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
属性更改后通过绑定更新网格(假设它引发绑定响应的更改事件。)
答案 0 :(得分: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
已实现以通知绑定。