-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor ItemsControl container generation and implement smooth virtualization #9677
Commits on Dec 7, 2022
-
Begin refactoring ItemsPresenter.
A lot still broken, in particular virtualization is completely removed.`ItemsPresenter` now no longer has an `Items` or `ItemTemplate` property; it detects when it's hosted in an `ItemsControl`. `IItemsPresenter` interface removed.
Configuration menu - View commit details
-
Copy full SHA for 692c0c1 - Browse repository at this point
Copy the full SHA 692c0c1View commit details -
Initial (re)impl of VirtualizingStackPanel.
Currently only supports smooth scrolling.
Configuration menu - View commit details
-
Copy full SHA for c20e3c2 - Browse repository at this point
Copy the full SHA c20e3c2View commit details -
If you want a different virtualization mode, use a different panel.
Configuration menu - View commit details
-
Copy full SHA for 5d1f9f4 - Browse repository at this point
Copy the full SHA 5d1f9f4View commit details -
Refactored ItemContainerGenerator.
A bunch of tests still failing, and some code commented out, but outlines the new API shape.
Configuration menu - View commit details
-
Copy full SHA for 1101f28 - Browse repository at this point
Copy the full SHA 1101f28View commit details -
Configuration menu - View commit details
-
Copy full SHA for 57b1ba9 - Browse repository at this point
Copy the full SHA 57b1ba9View commit details -
Configuration menu - View commit details
-
Copy full SHA for e07e5ce - Browse repository at this point
Copy the full SHA e07e5ceView commit details -
Configuration menu - View commit details
-
Copy full SHA for a1d809b - Browse repository at this point
Copy the full SHA a1d809bView commit details -
Configuration menu - View commit details
-
Copy full SHA for b3982f1 - Browse repository at this point
Copy the full SHA b3982f1View commit details -
Configuration menu - View commit details
-
Copy full SHA for fab8f15 - Browse repository at this point
Copy the full SHA fab8f15View commit details -
Configuration menu - View commit details
-
Copy full SHA for 14d429e - Browse repository at this point
Copy the full SHA 14d429eView commit details -
Configuration menu - View commit details
-
Copy full SHA for bbd3d2a - Browse repository at this point
Copy the full SHA bbd3d2aView commit details -
Configuration menu - View commit details
-
Copy full SHA for a9ca852 - Browse repository at this point
Copy the full SHA a9ca852View commit details -
Fixed SelectingItemsControlTests.
`ListBox` now needs a root as it uses a `VirtualizingStackPanel`.
Configuration menu - View commit details
-
Copy full SHA for c1ee26c - Browse repository at this point
Copy the full SHA c1ee26cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6626a2e - Browse repository at this point
Copy the full SHA 6626a2eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8bb1349 - Browse repository at this point
Copy the full SHA 8bb1349View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2c4572a - Browse repository at this point
Copy the full SHA 2c4572aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7e1068f - Browse repository at this point
Copy the full SHA 7e1068fView commit details -
Reimplement DisplayMemberBinding.
Use a slightly different approach to the one that was previously there: create an item template that contains `DisplayMemberBinding`. This is the approach that WPF broadly uses too.
Configuration menu - View commit details
-
Copy full SHA for 004103a - Browse repository at this point
Copy the full SHA 004103aView commit details -
Configuration menu - View commit details
-
Copy full SHA for a6423b2 - Browse repository at this point
Copy the full SHA a6423b2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2ae5c9c - Browse repository at this point
Copy the full SHA 2ae5c9cView commit details -
Refresh containers when relevant property changes.
When `ItemsControl.DisplayMemberBinding` or `ItemTemplate` changes, refresh the containers.
Configuration menu - View commit details
-
Copy full SHA for 000f393 - Browse repository at this point
Copy the full SHA 000f393View commit details -
Remove TabControl.HeaderDisplayMemberBinding.
As `DisplayMemberBinding` should select the member for the header (in WPF it's `DisplayMemberPath`). Also set `TabItem.TabStripPlacement`.
Configuration menu - View commit details
-
Copy full SHA for 1950e4b - Browse repository at this point
Copy the full SHA 1950e4bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 306c045 - Browse repository at this point
Copy the full SHA 306c045View commit details -
Configuration menu - View commit details
-
Copy full SHA for a7a7103 - Browse repository at this point
Copy the full SHA a7a7103View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6f04196 - Browse repository at this point
Copy the full SHA 6f04196View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4a92fad - Browse repository at this point
Copy the full SHA 4a92fadView commit details -
Configuration menu - View commit details
-
Copy full SHA for 84abb69 - Browse repository at this point
Copy the full SHA 84abb69View commit details -
Configuration menu - View commit details
-
Copy full SHA for 56db1db - Browse repository at this point
Copy the full SHA 56db1dbView commit details -
Configuration menu - View commit details
-
Copy full SHA for c99307c - Browse repository at this point
Copy the full SHA c99307cView commit details -
Configuration menu - View commit details
-
Copy full SHA for be2da5c - Browse repository at this point
Copy the full SHA be2da5cView commit details -
Configuration menu - View commit details
-
Copy full SHA for e7f3b23 - Browse repository at this point
Copy the full SHA e7f3b23View commit details -
Configuration menu - View commit details
-
Copy full SHA for 08f90dc - Browse repository at this point
Copy the full SHA 08f90dcView commit details
Commits on Dec 9, 2022
-
Only `VirtualizingCarouselPanel` currently implemented.
Configuration menu - View commit details
-
Copy full SHA for f0c89a6 - Browse repository at this point
Copy the full SHA f0c89a6View commit details -
Remove
FillMode
on transitions.Now that containers are being recycled, the state of the control following the animation needs to be the same as before the animation.
Configuration menu - View commit details
-
Copy full SHA for c54e466 - Browse repository at this point
Copy the full SHA c54e466View commit details -
Configuration menu - View commit details
-
Copy full SHA for 06de4bb - Browse repository at this point
Copy the full SHA 06de4bbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 627d9c5 - Browse repository at this point
Copy the full SHA 627d9c5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3195df0 - Browse repository at this point
Copy the full SHA 3195df0View commit details -
Configuration menu - View commit details
-
Copy full SHA for b678339 - Browse repository at this point
Copy the full SHA b678339View commit details -
Make ItemsSourceView ctors private.
So in future we could have different `ItemSourceView` concrete implementations that e.g. have an inner `IReadOnlyList<T>` in order to address #8764.
Configuration menu - View commit details
-
Copy full SHA for 518391b - Browse repository at this point
Copy the full SHA 518391bView commit details -
Configuration menu - View commit details
-
Copy full SHA for f042127 - Browse repository at this point
Copy the full SHA f042127View commit details -
Only invalidate the measure when the viewport changes in the direction of scroll.
Configuration menu - View commit details
-
Copy full SHA for d4a8b98 - Browse repository at this point
Copy the full SHA d4a8b98View commit details -
Variable width was causing the panel to flicker around as the values change.
Configuration menu - View commit details
-
Copy full SHA for bcb3a6d - Browse repository at this point
Copy the full SHA bcb3a6dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 395a90d - Browse repository at this point
Copy the full SHA 395a90dView commit details -
Prepare new containers before adding to tree.
Prevents compiled bindings failing because the `DataContext` is not yet set and is still inheriting the parent `DataContext`.
Configuration menu - View commit details
-
Copy full SHA for 0b3aa3a - Browse repository at this point
Copy the full SHA 0b3aa3aView commit details -
Don't allow child menus to inherit the top level `Menu`'s `ItemContainerTheme` as that is specific to top-level menu items.
Configuration menu - View commit details
-
Copy full SHA for 67d200c - Browse repository at this point
Copy the full SHA 67d200cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 14df77a - Browse repository at this point
Copy the full SHA 14df77aView commit details
Commits on Dec 10, 2022
-
Add scroll anchoring support to ItemsControl.
This necessitated adding another stage to the container preparation lifecycle that will be called after the container is added to the logical and visual trees: `ItemContainerPrepared`. Such a method is going to be necessary anyway if we ever want to expose events for container realization so will probably be worth having regardless.
Configuration menu - View commit details
-
Copy full SHA for 6d267f9 - Browse repository at this point
Copy the full SHA 6d267f9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 95e854a - Browse repository at this point
Copy the full SHA 95e854aView commit details -
Configuration menu - View commit details
-
Copy full SHA for d7201d2 - Browse repository at this point
Copy the full SHA d7201d2View commit details -
Configuration menu - View commit details
-
Copy full SHA for d5a585d - Browse repository at this point
Copy the full SHA d5a585dView commit details -
Remove references to "model index".
It's a TreeDataGrid concept (which is where this code was adapted from).
Configuration menu - View commit details
-
Copy full SHA for 9610c80 - Browse repository at this point
Copy the full SHA 9610c80View commit details
Commits on Dec 12, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 3c59202 - Browse repository at this point
Copy the full SHA 3c59202View commit details -
Configuration menu - View commit details
-
Copy full SHA for f371f18 - Browse repository at this point
Copy the full SHA f371f18View commit details -
`VirtualizingStackPanel` only does smooth scrolling now.
Configuration menu - View commit details
-
Copy full SHA for 9781a13 - Browse repository at this point
Copy the full SHA 9781a13View commit details -
Configuration menu - View commit details
-
Copy full SHA for c55b7a9 - Browse repository at this point
Copy the full SHA c55b7a9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 76b51cf - Browse repository at this point
Copy the full SHA 76b51cfView commit details
Commits on Dec 13, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 54bc9dd - Browse repository at this point
Copy the full SHA 54bc9ddView commit details -
Configuration menu - View commit details
-
Copy full SHA for 039fb90 - Browse repository at this point
Copy the full SHA 039fb90View commit details -
Configuration menu - View commit details
-
Copy full SHA for 17f7541 - Browse repository at this point
Copy the full SHA 17f7541View commit details -
Configuration menu - View commit details
-
Copy full SHA for da14232 - Browse repository at this point
Copy the full SHA da14232View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2b02afc - Browse repository at this point
Copy the full SHA 2b02afcView commit details
Commits on Dec 18, 2022
-
Configuration menu - View commit details
-
Copy full SHA for f5e0869 - Browse repository at this point
Copy the full SHA f5e0869View commit details
Commits on Jan 9, 2023
-
Configuration menu - View commit details
-
Copy full SHA for a8df486 - Browse repository at this point
Copy the full SHA a8df486View commit details -
Configuration menu - View commit details
-
Copy full SHA for 54924fc - Browse repository at this point
Copy the full SHA 54924fcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0dcf836 - Browse repository at this point
Copy the full SHA 0dcf836View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1ef4df1 - Browse repository at this point
Copy the full SHA 1ef4df1View commit details
Commits on Jan 13, 2023
-
Trying to get a repro for an issue seen with DataBox but so far unable to repro in a unit test. Anyway, these tests should be useful.
Configuration menu - View commit details
-
Copy full SHA for a9fd9f4 - Browse repository at this point
Copy the full SHA a9fd9f4View commit details -
Add redundancy for a problem I can't repro in tests.
There's a problem with `DataBox` that I can't repro in a unit test. Add some redundancy such that if we're still waiting for a viewport update after carrying out a layout pass, force another layout.
Configuration menu - View commit details
-
Copy full SHA for 8600f30 - Browse repository at this point
Copy the full SHA 8600f30View commit details -
Configuration menu - View commit details
-
Copy full SHA for d0f479d - Browse repository at this point
Copy the full SHA d0f479dView commit details
Commits on Jan 17, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 17e1d37 - Browse repository at this point
Copy the full SHA 17e1d37View commit details