c# - WPF Canvas-based ItemsControl with minimum recycled items? -
i'm using itemscontrol
canvas
backing panel
. need .clear() observablecollection
itemscontrol's itemsource
, , add new information it, causes controls destroyed , new usercontrol
s created, sluggish. how can force itemscontrol retain amount of containers after call .clear(), , reuse them when new items added itemsource?
i not sure how efficient in use case, might create derived itemscontrol , override getcontainerforitemoverride
, clearcontainerforitemoverride
methods put , take item containers cache collection.
public class cachingitemscontrol : itemscontrol { private readonly stack<dependencyobject> itemcontainers = new stack<dependencyobject>(); protected override dependencyobject getcontainerforitemoverride() { return itemcontainers.count > 0 ? itemcontainers.pop() : base.getcontainerforitemoverride(); } protected override void clearcontainerforitemoverride( dependencyobject element, object item) { itemcontainers.push(element); } }
Comments
Post a Comment