是否有类似于ITypedList的Silverlight?

时间:2011-09-26 10:39:57

标签: .net silverlight system.componentmodel

我有一组对象,每个对象都包含一组名称 - 值对。所有对象的名称都相同。我想将它们显示为数据网格中的列。

在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 个答案:

答案 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已实现以通知绑定。