【发布时间】:2020-09-30 21:43:44
【问题描述】:
我正在使用 Edit 方法对 SourceCache 进行多次更新。但是当观察结果集合的变化时,一次返回一个更新。此外,当达到 25 的更新阈值限制时,则清除并更新整个列表。虽然集合中的项目是有效的,但基于更改的 UI 动画并不理想。特别是在整个集合被清除和重建的情况下。以下 sn-p 重现了该问题:
示例片段:
public class DynamicDataTest
{
private readonly SourceCache<string, string> _sourceCache = new SourceCache<string, string>(x => x);
private readonly ReadOnlyObservableCollection<string> _collection;
public DynamicDataTest()
{
_sourceCache.Connect()
//.Sort(SortExpressionComparer<string>.Ascending(l => l))
.Bind(out _collection)
.Subscribe();
new SourceList<string>(_collection.ToObservableChangeSet())
.Connect()
.ForEachChange(change => Console.WriteLine(change.Reason.ToString()))
.Subscribe();
_sourceCache.AddOrUpdate("start");
_sourceCache.Edit(source =>
{
for (int i = 0; i < 26; i++)
{
source.AddOrUpdate(i.ToString());
}
});
}
}
我希望这个输出:
Add or AddRange
AddRange
结果却是:
AddRange
Clear
AddRange
【问题讨论】:
标签: c# dynamic-data reactiveui