2

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

在 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属性更改后通过绑定进行更新(假设它引发了绑定响应的更改事件。)

4

1 回答 1

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实现了通知绑定。

于 2011-10-04T08:01:16.967 回答