WPF Observable集合,动态类型

时间:2014-09-02 10:57:25

标签: wpf dynamic binding devexpress observablecollection

我需要能够将网格绑定到变量类型的集合(接口/类型T /动态等)

我认为我能够将集合绑定到接口,然后更改从此接口扩展的对象,UI将相应地更新。

private readonly ObservableCollection<IExportItemModel> _exportedDataCollection = new ObservableCollection<IExportItemModel>();
    public ObservableCollection<IExportItemModel> ExportedDataCollection
    {
        get
        {
            return _exportedDataCollection;
        }
    }

List<spGetDataByTransactionId_Result> t = _repository.GetDataByTransactionId(new Guid());
List<IExportItemModel> tempList = new List<IExportItemModel>();
t.ForEach(r=>tempList.Add(new FixedWidthModel(r)));

ExportedDataCollection.AddRange(tempList);

但是UI并没有反映出这些变化,或者至少DevExpress没有。

我会不会考虑更好的方式?

提前致谢, 奥利

1 个答案:

答案 0 :(得分:2)

根据您选择的UI控件,有多种方法可以实现您的目标。例如,如果您有一个包含许多已实现该接口的不同类的ObservableCollection<SomeInterface>集合,那么您可以在集合控件中显示它们。

但是,如果您选择将DataGridAutoGenerateColumns="True"一起使用,那么您将只看到界面中实际定义的属性,并且在类中没有定义额外的属性。另一方面,如果您将该集合的数据绑定到ItemsControl.ItemsSource,那么您可以数据绑定到所有属性,甚至是在实现中定义的那些类。

您将使用基类找到类似的结果。但是,要避免所有问题,最常使用ObservableCollection<object>集合。