CommunityToolkit / CommunityToolkit/Labs-Windows

🧪 [Experiment] CanvasLayout - A virtualized canvas for ItemsRepeater

Open
#213 0 comments 1 reaction 0 assignees View on GitHub
experiment :test_tube:
Dominant language
C#
Stars
482
Forks
89
PR merge metrics
No merged PRs in 30d

Description

# Approved from Toolkit
See previous work here:

- Also Related to Experiment #212
- https://github.com/CommunityToolkit/WindowsCommunityToolkit/discussions/3716
- https://github.com/CommunityToolkit/WindowsCommunityToolkit/issues/854

## Problem Statement (copied from Discussion):

> I find myself writing this control over and over in various projects and it's never very good. I'd love a control that would be a sibling to ListView or GridView only it was backed by a 2D Canvas instead of an ItemsStackPanel.

## Overview

This experiment adds the following components:

- **CanvasLayout** an __experimental__ early prototype layout for `ItemsRepeater` to provide a virtualized canvas.

## Using

You can try it out via the NuGet Packages here:

- UWP: https://dev.azure.com/dotnet/CommunityToolkit/_artifacts/feed/CommunityToolkit-Labs/NuGet/CommunityToolkit.Labs.Uwp.CanvasLayout
- WinUI 3: https://dev.azure.com/dotnet/CommunityToolkit/_artifacts/feed/CommunityToolkit-Labs/NuGet/CommunityToolkit.Labs.WinUI.CanvasLayout

Read more about [Preview Packages here](https://aka.ms/wct/wiki/previewpackages).

CommunityToolkit members can also try it out with Codespaces.

## TO DO
- [ ] Verify pattern for ItemsRepeater is properly implemented
- [ ] Investigate issues with scrolling
- [ ] Investigate platform differences

## Implementation Requirements

Not all these items are required to submit a PR. This list is here to help track what is remaining to implement before a technical review and discussion of moving into the main repository can occur.

- [ ] Working Prototype
- [ ] Feature Complete
- [ ] Documentation
- [ ] Samples
- [ ] Tests
- [ ] Community Feedback / Usage Testimonies

## Tested Platforms

- [x] UWP
- [x] WinAppSDK / WinUI 3
- [x] Web Assembly (WASM)
- [ ] Android
- [ ] iOS
- [ ] MacOS
- [ ] Linux / GTK

## Technical Review

These items can sometimes be done ahead of time, but are usually started and completed after all implementation details are finished.

- [ ] Accessibility Audit
- [ ] API/Naming Review
- [ ] Code Quality/Style
- [ ] Dependency Review
- [ ] Design/Style Review
- [ ] Final Approval

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.