CommunityToolkit / CommunityToolkit/Windows

Better support for NotifyCollectionChanged event

Open
#298 0 comments 4 reactions 0 assignees View on GitHub
enhancement feature request :mailbox_with_mail: good first issue help wanted
Dominant language
C#
Stars
1.1k
Forks
166
PR merge metrics
No merged PRs in 30d

Description

### Describe the bug

We have 6 explicit places we reference the NotifyCollectionChanged event in the Toolkit: https://github.com/search?q=repo%3ACommunityToolkit%2FWindows%20NotifyCollectionChanged&type=code

- [ ] MetadataControl - Updates everything all the time regardless
- [ ] WrapLayout/StaggeredLayout - Does something with Indexes? Probably need update?
- [x] IsNullOrEmptyStateTrigger - Just uses it as an indicator to check collection size, so should be good
- [ ] InterspersedObservableCollection (TokenizingTextBox) - Looks like it handles multiple changes already, but could probably use tests for this scenario? (Actually, looks like we didn't bring [their original test file](https://github.com/CommunityToolkit/WindowsCommunityToolkit/blob/main/UnitTests/UnitTests.UWP/UI/Controls/Test_TokenizingTextBox_InterspersedCollection.cs) forward from the old repo ☹)
- [ ] AdvancedCollectionView - if more than one resets the collection, so doesn't care, but un-optimal

If/When https://github.com/dotnet/runtime/issues/18087 gets implemented, it'd be good for the Toolkit to just be ready and work. Many of our other collection controls are just based on ListViewBase and don't do anything too special, so I think we should be good other from the above?

### Steps to reproduce

```text
N/A
```

### Expected behavior

Should work with multiple items in a collection changed event.

### Screenshots

_No response_

### Code Platform

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

### Windows Build Number

- [ ] Windows 10 1809 (Build 17763)
- [ ] Windows 10 1903 (Build 18362)
- [ ] Windows 10 1909 (Build 18363)
- [ ] Windows 10 2004 (Build 19041)
- [ ] Windows 10 20H2 (Build 19042)
- [ ] Windows 10 21H1 (Build 19043)
- [ ] Windows 10 21H2 (Build 19044)
- [ ] Windows 10 22H2 (Build 19045)
- [ ] Windows 11 21H2 (Build 22000)
- [ ] Other (specify)

### Other Windows Build number

_No response_

### App minimum and target SDK version

- [ ] Windows 10, version 1809 (Build 17763)
- [ ] Windows 10, version 1903 (Build 18362)
- [ ] Windows 10, version 1909 (Build 18363)
- [ ] Windows 10, version 2004 (Build 19041)
- [ ] Windows 10, version 2104 (Build 20348)
- [ ] Windows 11, version 22H2 (Build 22000)
- [ ] Other (specify)

### Other SDK version

_No response_

### Visual Studio Version

_No response_

### Visual Studio Build Number

_No response_

### Device form factor

_No response_

### Additional context

Related:
- https://github.com/dotnet/designs/pull/320/
- https://github.com/dotnet/runtime/issues/18087
- https://github.com/dotnet/runtime/issues/76375

### Help us help you

No, I'm unable to contribute a solution.

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.