我需要能够将网格绑定到变量类型的集合(接口/类型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没有。
我会不会考虑更好的方式?
提前致谢, 奥利
答案 0 :(得分:2)
根据您选择的UI控件,有多种方法可以实现您的目标。例如,如果您有一个包含许多已实现该接口的不同类的ObservableCollection<SomeInterface>
集合,那么您可以在集合控件中显示它们。
但是,如果您选择将DataGrid
与AutoGenerateColumns="True"
一起使用,那么您将只看到界面中实际定义的属性,并且在类中没有定义额外的属性。另一方面,如果您将该集合的数据绑定到ItemsControl.ItemsSource
,那么您可以数据绑定到所有属性,甚至是在实现中定义的那些类。
您将使用基类找到类似的结果。但是,要避免所有问题,最常使用ObservableCollection<object>
集合。