优先级绑定 PriorityBinding msdn 虚拟化数据 public class VirtualizedCollection T : ObservableCollection T , ...
优先级绑定
PriorityBinding msdn
虚拟化数据
public class VirtualizedCollection<T> : ObservableCollection<T>,
IList,
ICollectionViewFactory
{
private readonly Func<int, int, IEnumerable<T>> _dataFetcher;
public VirtualizedCollection(Func<int, int, IEnumerable<T>> dataFetcher,
int totalCount)
{
_dataFetcher = dataFetcher;
TotalCount = totalCount;
}
protected override void InsertItem(int index, T item)
{
if(index >= Count && index < TotalCount)
{
var items = _dataFetcher(index, 50); // 每次加载50条
foreach(var it in items)
{
base.InsertItem(index++, it);
}
}
}
}
冻结对象
var brush = new LinearGradientBrush();
brush.Freeze(); // 禁止后续修改,提升渲染性能