我正在使用DynamicData(6.9.1.2588)转换项目然后对其进行排序。
yAxis: {
title: {
text: 'Temperature'
},
labels: {
formatter: function () {
return 'test' ;
}
}
}
但是,当用于排序的属性发生更改时,dynamicdata会调用已转换项的Dispose(TableRow)。 即使删除DisposeMany,它也会这样做。
我没有传入TableRow构造函数,因此这些项被放置但保留在列表中。
这是dynamicdata的错误还是我的代码有误?
答案 0 :(得分:0)
发现了问题。 这是通过DynamicData中的设计完成的,在此介绍了解决方法。 https://github.com/RolandPheasant/DynamicData/issues/19
在初始ToObservableChangeSet之后,我们必须添加
.AddKey(d => d.GetLocalId())
在转换之后,我们必须添加
.AsObservableCache()
.DisposeMany()
.Connect()
因此,仅当从链中较早的位置删除项目时,才会发生处置。不是当它们在链中稍后的排序中被删除/添加时。
最终代码如下:
ObservableCollectionEx.ToObservableChangeSet<ReactiveList<DataItem>, DataItem>(model.Children)
.AddKey(d => d.GetLocalId())
.Filter((d) => d.ViewClass == NormalizedType.TableRow)
.Transform(d => new TableRow(d, this))
.DisposeMany()
.AsObservableCache()
.Connect()
.AutoRefresh(a => a.Index)
.Sort(SortExpressionComparer<TableRow>.Ascending(a => a.Index))
.ObserveOnDispatcher()
.Bind(Rows)
.Subscribe()