【问题标题】:Is there a Silverlight equivalent of ITypedList?是否有相当于 ITypedList 的 Silverlight?
【发布时间】:2011-09-26 10:39:56
【问题描述】:

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

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

【问题讨论】:

    标签: .net silverlight system.componentmodel


    【解决方案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 以通知绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-08
      • 2010-10-16
      • 2023-04-04
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多