Skip to content

WinUi CollectionView is not recycling containers. #8151

Open

Description

Description

The WinUI CollectionView does not recycle item-containers and instead creates a new item-container every time some data scrolls into view.

Steps to Reproduce

Minimum repo:

https://github.com/Keflon/MauiRecycleBug

Steps:

Create a CollectionView
Fill it with items
Scroll up and down in the CollectionView
For the sample, watch the Debug output.

Android

A small number of CollectionItem instances are created and these are recycled.
Example Debug output:
Created CollectionItem. InstanceId: 12. There are 12 instances allocated

WinUI

A new CollectionItem is created every time an instance scrolls into view.
Example Debug output:
Created CollectionItem. InstanceId: 133. There are 133 instances allocated

Scrolling quickly to the end and back (e.g. by dragging the scroll-bar) causes a CRASH

Scrolling slowly can eventually instigate an item being garbage-collected
Example Debug output:
Collected CollectionItem. InstanceId: 9. There are 129 instances allocated

Related: The DataTemplate in the sample code has a CheckBox.

  1. The CheckBox is rendered incorrectly until the Window is resized horizontally.
    1. Should I open a new bug for this?
  2. Having the CheckBox present in the DataTemplate causes a LOT of memory to be consumed, leading to an OutOfMemoryException
    1. Is this a separate bug?

Version with bug

6.0.400 (current)

Last version that worked well

6.0 Release Candidate 3

Affected platforms

Windows

Affected platform versions

Latest

Did you find any workaround?

Note: I can't confirm 100% this worked in the previous release because I don't know how to roll-back, but I'm certain this is a new problem.

Relevant log output

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    area-controls-collectionviewCollectionView, CarouselView, IndicatorViewplatform/windows 🪟s/triagedIssue has been revieweds/verifiedVerified / Reproducible Issue ready for Engineering Triaget/bugSomething isn't workingt/perfThe issue affects performance (runtime speed, memory usage, startup time, etc.) (sub: perf)

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions