ModernWpf parity work now uses official WPF Fluent as the primary source for stock WPF controls, and WinUI 3 source behavior for existing ModernWpf controls that are not covered by official WPF Fluent.
The adopted synchronization epoch is official winui3/main commit
23a73be03d194ea0ece97da71de98b6b53021b70, latest stable
winui3/release/2.3.1 commit
a97562621a1d1ea397a38a3f512c9eef99db52d8, and WinUI Gallery main commit
b78c440193aab788215888561e45adf72da848cb. The complete reconciliation from
the prior detailed-audit pins is recorded in
docs/winui3-sync-2026-07-29.md, the finite Preview 2 cutoff record
docs/winui3-sync-2026-08-06.md, and the Preview 3 adoption record
docs/winui3-sync-2026-08-08-preview3.md, the Preview 4 adoption record
docs/winui3-sync-2026-08-08-preview4.md, and the Preview 6 adoption record
docs/winui3-sync-2026-08-10-preview6.md.
Earlier detailed family audits retain their exact blob and history evidence at
the revisions they reviewed; newly adopted families pin the current milestone
cutoff directly. The dated synchronization records close every bounded delta
between those family pins and the accepted epoch. The machine-readable
authority, including the stable/main/Gallery tracks and every family path
mapping, is
tools/upstream/upstream-sync.json. A scheduled read-only report compares
each adopted epoch target with its moving upstream head and requires every
changed file to be mapped, explicitly ignored with a justification, or
reported as unmapped action-required drift.
Current audits query the official repository before making latest-source
claims. Current repository paths use the post-May-2026 root layout
(controls/... rather than src/controls/...); the stable track's leading
src/ is normalized by the drift reporter.
- Prefer official WPF Fluent implementation behavior for stock WPF controls that are present in
PresentationFramework.Fluent. - Prefer WinUI 3 implementation behavior for ModernWpf controls that are not covered by official WPF Fluent.
- Add new controls only in the fixed milestone assigned by
docs/roadmap-1.0.md, with its source audit, WPF adaptations, Gallery page, public contracts, and focused coverage landing together. - Do not preserve old ModernWpf behavior when it conflicts with the relevant source-backed behavior.
- Treat guessed ModernWpf implementations as debt, not as a maintenance baseline. When official WPF Fluent or WinUI 3 source exists for an existing control, delete/replace/adapt the guessed implementation as a whole-control parity slice instead of layering small compatibility patches on top of it.
- Port source behavior directly where WPF has an equivalent model.
- Where WinUI depends on compositor, popup island, WinRT automation, gamepad, or platform-only services, document the WPF substitution and add tests around the substitute behavior.
- Keep WinUI 2.8.7 notes only as historical/resource-reference material unless a slice explicitly needs that baseline.
-
2026-08-10 ItemsView Preview 7 source port:
docs\itemsview-winui3-source-audit.mdpins the complete control family to the adopted product cutoff23a73be03d194ea0ece97da71de98b6b53021b70and Gallery cutoffb78c440193aab788215888561e45adf72da848cb. The port preserves the current IDL surface, selection/invocation policies, List/SelectionProvider automation, default StackLayout, swappable UniformGrid/LinedFlow layouts, ItemTransitionProvider forwarding, and three-example Gallery shape. WPFScrollViewer,BringIntoViewOptions, native focus navigation, and a liveScrollContentPresentercache fallback replace WinUI ScrollView/ScrollPresenter, InteractionTracker, and XYFocus services. Focused product tests cover source-shaped selection, input, spatial keyboard, automation, layout, transition, viewport, bring-into-view, and generated-repeater scrolling paths; Preview 7 adds no ItemsView-specific public resource keys. -
2026-07-26 ContentControlEx content-transition behavior: issue #127 exposed that the shipped ContentTransitions property and template forwarding were metadata-only. ContentControlEx now resolves the last NavigationThemeTransition on each content change and uses the existing NavigationTransitionInfo/NavigationAnimation engine with paired current/previous ContentPresenterEx hosts. The WPF adapter retains outgoing content through exit, disables input during the sequence, enters the new content, and restores a single clean current presenter; SuppressNavigationTransitionInfo and the shared system animation switch remain authoritative. The exact regression fails on the old one-presenter template and now passes through completed cleanup without adding public API.
-
2026-07-25 enhanced Frame/Page navigation cache parity:
ModernWpf.Controls.Pagenow exposesModernWpf.Navigation.NavigationCacheMode, andModernWpf.Controls.Frameexposes the matchingCacheSizedependency property with WinUI's default of 10. Type-based navigation uses separate permanent (Required) and bounded least-recently-used (Enabled) caches;Disabledremains the default, required pages do not consume the enabled-cache limit, reducingCacheSizeevicts oldest enabled entries immediately, and changing a page toDisabledflushes its type. WPF'sNavigationServicecontinues to own back/forward journaling, while allNavigate(Type, ...)andSourcePageTypepaths use the cache adapter.FrameNavigationCacheTestscovers the public contract and cache lifecycle. -
2026-07-19 IconElement-family current-source product, Gallery, behavior, accessibility, interaction, and pixel lock: refreshed IconElement, FontIcon, SymbolIcon, PathIcon, and BitmapIcon against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. The only substantive post-baseline change,16737fe3a48cd8fc9b337a13e1b04e17afd97882, makes WinUI FontIcon/BitmapIcon direct-child hosting opt-in; ModernWpf retains a documented private WPF layout-host substitute with exact public geometry. This pass ports WinUI's complete 197-entry legacy Symbol-to-Fluent glyph table, the exactSegoe Fluent Icons,Segoe MDL2 Assetsdefault shared with FontIconSource, inherited FontStyle/FontWeight, owner-level retained RTL transforms, and PathIcon's defaultStretch.None. IconElement remains peerless while host controls own accessible names. Fresh fully live Lightartifacts/visual-checks/20260719-032510-192-22356/report.mdand Darkartifacts/visual-checks/20260719-032607-022-99256/report.mdpass exact50x51crops at0.02under0.1; Light/Dark monochrome recordings pass with local deltas4.336/3.582, and AppBarButton cross-control checks pass their strict shared-SymbolIcon gates. Product/source tests pass 23/23; focused Gallery coverage passes 4/4 on net8/net10; multi-target builds have zero errors. -
2026-07-19 RatingControl current-source product, Gallery, behavior, accessibility, interaction, and pixel lock: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. The sole substantive post-baseline product change,61143cf16f5c0627153ecb1ad0ca1657f02135a7, now has a direct WPF port: PlaceholderValue preserves zero and fractions below one while negative values retain the unset sentinel, and invalid MaxRating is committed before dependent values are re-coerced so loaded layout never sees a negative maximum. The current Gallery placeholder slider now preserves its initial zero instead of translating it to the obsolete sentinel; the converted two-example page is otherwise unchanged. Fresh gate-enforced Lightartifacts/visual-checks/20260719-025609-047-47084/report.mdpasses exact183x32static /203x52selected crops at6.23/2.80; Darkartifacts/visual-checks/20260719-025640-167-62492/report.mdpasses at6.90/4.35, under strict7.0/5.0gates with zero size tolerance. Fresh Light/Dark value recordingsartifacts/gallery-recordings/20260719-025706-701/report.mdandartifacts/gallery-recordings/20260719-025724-041/report.mdreach 3 through UIA RangeValue. Product/source tests pass 16/16; focused Gallery coverage passes 4/4 on net8/net10; Controls/Gallery build across net462/net8/net10 with zero errors. -
2026-07-19 CommandBarFlyout current-source product, Gallery, behavior, accessibility, interaction, and pixel lock: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. The sole post-baseline runtime change,5c0970f013029ad4e343ff073fc764f1b49088fe, optimizes inserted/replaced command localization; ModernWpf's scoped peer flag already supplies equivalent constant-time MenuItem identity. Perf2026 removes one redundant toggle overflow alignment setter and matches the local template. This pass also closes the official wide-strip API gap: 20 primary plus five secondary commands now produce exactly 9 primary and 17 overflow children, including 11 moved commands and the generated separator. AlwaysExpanded now rejects internal collapse while the flyout is open, and live-inserted commands retain MenuItem roles. Fresh Lightartifacts/visual-checks/20260719-022802-704-69300/report.mdand Darkartifacts/visual-checks/20260719-022908-765-38068/report.mdretain exact229x136expanded crops at7.05/8.18and static4.99; fresh recordingsartifacts/gallery-recordings/20260719-023035-553/report.mdandartifacts/gallery-recordings/20260719-023154-586/report.mdpass both repeat opens. Product tests pass 29/29; focused Gallery coverage passes 5/5 on net8/net10; multi-target builds have zero errors. -
2026-07-19 CommandBar current-source product, Gallery, behavior, accessibility, lifecycle, interaction, and pixel lock: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87; classic and perf2026 theme blobs are identical and the bounded later runtime history is nonfunctional cleanup. This pass closes three real gaps: currentDynamicOverflowItemsChanging/action timing, inheritedOpening/Opened/Closing/Closedevents and protected hooks, and AppBar-compatible Toggle/ExpandCollapse/Window automation patterns with state-change notifications. The existing dynamic-order implementation now groups positive orders with adjacent separators and restores source order, while the WPF popup's authoritativeIsOpentransition guaranteesClosedeven when collapsed popup content suppressesPopup.Closed. Fresh exact-size Lightartifacts/visual-checks/20260719-015618-975-54260/report.mdpasses resting/open crops at1.70/2.16; Darkartifacts/visual-checks/20260719-015715-320-93036/report.mdpasses at2.08/2.37, all under2.5with zero size tolerance. Fresh Light/Dark OpenRepeat recordingsartifacts/gallery-recordings/20260719-015752-861/report.mdandartifacts/gallery-recordings/20260719-015932-813/report.mdpass and prove repeated opening. Product tests pass 43/43; focused Gallery coverage passes 3/3 on net8/net10; Controls/Gallery build on net462/net8/net10 with zero errors. -
2026-07-19 AppBar-family current-source product, Gallery, behavior, accessibility, interaction, and pixel lock: refreshed AppBarButton, AppBarToggleButton, AppBarSeparator, and AppBarElementContainer against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Classic runtime/theme inputs remain current and the perf2026 button/toggle variants only express equivalent setters. The audit found a real public/behavior gap: all four elements now expose currentICommandBarElement.IsInOverflowandDynamicOverflowOrder, and CommandBar moves positive order groups lowest-first with adjacent separators before falling back right-to-left through order-zero commands; property changes reflow immediately. Gallery commit40a22976f78e63d5480afa8b49d5f3f7d5860dc6corrected the displayed AppBarButton flyout tree, now mirrored and guarded locally. Fresh Lightartifacts/visual-checks/20260719-012054-235-104188/report.mdpasses button/toggle/separator at4.43/4.45/0.61; Darkartifacts/visual-checks/20260719-012207-886-65184/report.mdpasses at4.47/4.47/0.52, all with exact primary sizes. Fresh Light/Dark recordingsartifacts/gallery-recordings/20260719-012259-999/report.mdandartifacts/gallery-recordings/20260719-012334-172/report.mdpass 3/3 and prove button output plus Off-to-On toggle behavior. Product/source tests pass 41/41; focused Gallery coverage passes 2/2 on net8/net10. -
2026-07-18 AnnotatedScrollBar current-source product, Gallery, behavior, accessibility, interaction, and pixel lock: refreshed against official
microsoft-ui-xamlcommitde3e767333c2f0717a6a70cb22bd192ced5ad885and WinUI Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Generated/IDL/header/classic-theme/event/panning/test/TestUI/ScrollPresenter inputs remain byte-current; runtime only shares the infinite-size constant and iterates labels by const reference, while perf2026 expresses equivalent state setters. ModernWpf's visible example now restores current Gallery'sScrollViewheader/XAML andScrollPresenter.VerticalScrollControllersnippet while retaining the tested WPF ScrollViewer/WrapPanel adapter underneath. Controller requests/cancellation/direction, labels/collision/hover, parts/resources, and no-standalone-peer ownership are pinned. Exact52x500live crops pass Light1.20/ Dark1.21under1.5with zero size tolerance; scroll recordings prove 0%→55% movement at local deltas102.53/102.133. Product/source tests pass 15/15, Gallery coverage 3/3 on net8/net10, and net462 Controls/Gallery builds are warning-free. -
2026-07-18 InfoBar current-source product, Gallery, behavior, accessibility, interaction, and pixel lock: refreshed against official
microsoft-ui-xamlcommitde3e767333c2f0717a6a70cb22bd192ced5ad885and WinUI Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Runtime, generated, IDL, peer, panel, template/theme, interaction-test, localization, and TestUI inputs remain byte-current; later history only moves the source root and perf2026-packages the same dictionaries. Current defaults, close/cancel ordering, icon reset, severity/foreground/content/visibility states, physical-pixel panel layout, StatusBar/InfoBar peer identity, open-only accessible-tree membership, all three Gallery examples, and every option family are pinned. The harness now requires exact560x95geometry with zero size tolerance under2.0; fresh Light/Dark pass at1.33/1.46. Fresh On-to-Off recordings pass with4.47/8.786local deltas. Product/source tests pass 12/12, Gallery coverage 3/3 on net8/net10, and Controls/Gallery build warning-free on net462. -
2026-07-18 ProgressBar current-source product, Gallery, behavior, accessibility, and pixel parity: refreshed the custom
ModernWpf.Controls.ProgressBaragainst officialmicrosoft-ui-xamlcommitde3e767333c2f0717a6a70cb22bd192ced5ad885and WinUI Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Runtime/resource blobs remain current; later history only moves the source root and perf2026-packages the same dictionaries. A distinctWinUIProgressBarroute mirrors the current two-example Gallery page without claiming the stock WPFProgressBarroute as custom-control evidence. The live harness sets both determinate bars to 65 through UIA, requires the realProgressBar2/ModernWpf elements, exact130x3crops, zero size tolerance, and delta<=2.0. A DPI-aware one-scanline overlay compensates WPF's full-edge antialiasing while retaining source caps, width math, track, states, transforms, and public geometry. Final Light and Dark both pass at0.43; range/state/NaN behavior, roles, accessible names, RangeValue behavior, exact snippets, and strict gates are pinned. -
2026-07-18 ProgressRing current-source, Gallery, behavior, accessibility, and pixel lock: refreshed against official
microsoft-ui-xamlcommitde3e767333c2f0717a6a70cb22bd192ced5ad885and WinUI Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Every runtime, generated, Lottie, theme, peer, API-test, and interaction-test blob remains byte-current; later history only moves the source root and perf2026-packages unchanged XAML. Current two-example Gallery layout/snippets, toggle/background/value/NaN behavior, ProgressBar role, localized type/name, control-view state, and determinate-only RangeValue are pinned. The deterministic harness sets both rings to 65, requires the real 60x60 elements, and now enforces zero size tolerance in addition to its1.0mean-delta gate. Final Light is0.64; Dark is0.63, both exact60x60. -
2026-07-19 MenuFlyout current-source product, Gallery, behavior, accessibility, interaction, and pixel lock: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. The classic theme blob remains byte-current; the new perf2026 blobf5cfea5b8bd4b3bccb8a24c8f4fbc165c1cc69b9only substitutes equivalent setters for seven narrow-padding animations and catches up SplitMenuFlyout content already present in the classic authority before root move8463f45162149de0ec3ad7df752596893fe3e13e. The current seven-example Gallery surface, 14-DIP typography, item/presenter metrics, radio placeholder, High Contrast tokens, roles, providers, and exact popup normalization remain pinned. Fresh Lightartifacts/visual-checks/20260719-004427-629-26672/report.mdpasses exact68x64/96x102crops at0.57/6.70; Darkartifacts/visual-checks/20260719-004459-735-37204/report.mdpasses at0.55/4.01. Fresh Light/Dark OpenRepeat recordingsartifacts/gallery-recordings/20260719-004531-064/report.mdandartifacts/gallery-recordings/20260719-004623-068/report.mdinvokeBy rating, prove leaf dismissal, and reopen Sort. Product tests pass 21/21; focused Gallery coverage passes 3/3 on net8/net10; Gallery builds pass net462/net8/net10 with zero errors. -
2026-07-19 MenuBar current-source product, Gallery, behavior, accessibility, interaction, and pixel lock: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. All ten audited product blobs remain byte-current; later history only packages perf resources and performs root move8463f45162149de0ec3ad7df752596893fe3e13e. The current three-example Gallery retains liveOpen/Other Formatslabels and deliberately historical ellipses in its displayed snippets. This pass fixes cross-control drift exposed after current MenuFlyout typography landed: the WPF MenuBar-only presenter adapter restores system-menu glyph metrics, exact four-row134-pixel geometry, and source leaf-invocation dismissal while preserving submenus andStaysOpenOnClick. Fresh Lightartifacts/visual-checks/20260719-000953-705-5868/report.mdpasses exact158x40closed at2.63and96x134versus98x134open at8.61; Darkartifacts/visual-checks/20260719-001049-872-102252/report.mdpasses at2.57/6.74. Fresh Light/Dark OpenRepeat recordings proveExitdismissal and reopen. Product tests pass 12/12; focused Gallery coverage passes 4/4 on net8/net10; Gallery builds on net462/net8/net10. -
2026-07-18 Flyout current-source product, Gallery, behavior, accessibility, interaction, and pixel parity: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Bounded history contains only root move8463f45162149de0ec3ad7df752596893fe3e13eand current placement fix2db27f71f857363d6a9a4485e01c8b8fdbe02499; presenter/theme blobs and the one-example converted Gallery remain current. The port preserves16,15,16,17padding, border/corner/content/shadow structure and bottom-aligns overflowing Left/Right placement to its anchor. Fresh exact90x32Light/Dark triggers remain2.63/2.21; complete366x96surfaces remain10.07/3.72versus WinUI366x97. Fresh OpenRepeat recordings prove confirmation close and reopen in both themes. Product tests pass 24/24, focused Gallery coverage passes 6/6 on net8/net10, and Gallery builds on net462/net8/net10. -
2026-07-18 Popup current-source Gallery visual, behavior, accessibility, and interaction lock: refreshed against official
microsoft/WinUI-Gallerycommit29f62479d5c046a0b854a5868e5a7cd484572d87; current page/code/snippet blobs are pinned and no Popup change follows conversion14a4a1a2b8ddc527dc4a7d5f7e743d7c2bc97db7. The current runtime page uses a natural-heightMinWidth=240surface while its displayed snippet intentionally remains the historical fixed200x160example. ModernWpf's platform WPF Popup adapter preserves offsets, inverse light-dismiss state, option disabling/restoration, explicit Close, Text/Button roles, and Invoke. Its 22-DIP heading minimum bridges WPF's one-DIP-shorter 16px line box and produces exact240x96geometry. Fresh fully live Lightartifacts/visual-checks/20260718-234231-942-70740/report.mdpasses exact189x32trigger /240x96surface at3.33/2.63; Darkartifacts/visual-checks/20260718-234257-459-77704/report.mdpasses at3.13/2.66. Fresh Light/Dark OpenRepeat recordings pass with maximum frame/local deltas0.265/23.164and0.367/28.313. Focused Gallery coverage passes 3/3 on net8/net10; PowerShell parsers and Gallery builds on net462/net8/net10 pass. -
2026-07-18 TeachingTip current-source pixel, behavior, and accessibility parity: refreshed against official
winui3/maincommitde3e767333c2f0717a6a70cb22bd192ced5ad885. The root-layout move8463f45162149de0ec3ad7df752596893fe3e13eis non-substantive; the only later control patch,c7e2f98d978c81c2b7b0054eb042a6f8f816ec9c, merely compiles test hooks out of production. ModernWpf now forwards owner automation name/ID to the popup with the source title fallback and live refresh behavior. The harness replaces incomparable difference crops with a commonTeachingTipSurface, requires exact135x32resting and224x64open geometry, and enforces4.0static /10.0open gates with exact size. Final Light is3.43static /9.30open; Dark is2.94/8.28. -
2026-07-18 ContentDialog current-source, Gallery, pixel, behavior, accessibility, and interaction parity: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87; the only post-baseline product hit is root move8463f45162149de0ec3ad7df752596893fe3e13e, and the two-example Gallery is unchanged after conversion. Product and Gallery blobs, both default-button modes, results, custom content, fonts, Window/modal peer semantics, and strict closed/open gates are pinned. Fresh Light is3.59closed and6.59open (101x32,320x218vs320x219); Dark is2.62/6.15(101x32,320x220vs320x221). Fresh OpenRepeat recordings verify Cancel close and reopen in both themes. Product/source tests pass 18/18, Gallery coverage passes 2/2 on net8/net10, and Gallery builds on net462/net8/net10. -
2026-07-18 AppBarButton/AppBarToggleButton/AppBarSeparator current-source, pixel, behavior, and accessibility parity: refreshed against official
winui3/maincommitde3e767333c2f0717a6a70cb22bd192ced5ad885and installed WinUI Gallery2.9.3.0. The only post-May source-history hit is commit8463f45162149de0ec3ad7df752596893fe3e13e, which removed the mirror's oldsrc/prefix; the AppBar implementation/resources did not substantively change. Current 68x64 button/toggle geometry and 334x48 separator sample geometry were already exact, so no source-breaking product offset was added. The harness now requires the exact official control crops, strict static gates of5.0/5.0/1.0, exact static sizes, live AppBarButton click/output parity under7.0with a two-pixel width allowance, and live AppBarToggleButton Off-to-On parity under3.0with exact size. Final Light deltas are button4.43static /5.64output, toggle4.45static /2.37checked, and separator0.61; Dark is4.47/6.61,4.47/2.51, and0.52. Product/source tests pass 37/37, Gallery coverage 2/2 on net8 and net10, and Controls/Gallery build on net462/net8/net10. -
2026-07-18 NavigationView current-source, Gallery, behavior, accessibility, interaction, pixel, and startup parity: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. ModernWpf retains the current resource/template/peer/sample lock and now ports two current runtime fixes: pane layout compares actual menu height and refuses negative footer subtraction before assigningMaxHeight, while the queued child-flyout show revalidates expansion, flyout mode, template root, and attached flyout to avoid reopening stale/recycled items. Deterministic regressions cover both. The unchanged eight-example Gallery, source definitions, options, data/hierarchy paths, and selection behavior are pinned. Fresh exact745x460Light/Dark comparisons remain1.03/0.93under1.2; fresh selection recordings pass at local deltas4.848/5.139. NavigationView product/source tests pass 54/54, SplitView 14/14, Gallery coverage 7/7 on net8/net10, and Gallery builds on net462/net8/net10. -
2026-07-17 CommandBarFlyout current-source pixel/accessibility parity: refreshed against official
winui3/maincommit3cae15f071f1ab8565f9a7592dbf27f04bafe651and live WinUI Gallery2.9.3.0. The port removes stale fixed primary-item and command-bar dimensions, follows the source 40px/52px primary states and 36x54 ellipsis, compensates WPF's separate popup HWND by the measured two-pixel anchor inset, and exposes Menu/MenuItem automation roles plus the expandedLess app barname. ModernWpf and WinUI now share an exact217x124raw command union and229x136shadow-inclusive interaction crop in both themes. Strict static/interaction gates are6.0/9.0, with exact interaction size parity. -
2026-07-18 ItemsRepeater current-source, accessibility, Gallery, and pixel parity: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Current product blobs and the bounded post-root history are pinned, including WinUI's viewport-manager consolidation and null-LayoutStatecollection-change guard. A direct port of upstreamAccessibilityTests.ValidateChildrenPeersnow proves the existing WPF peer filters a recycled element, flattens accessible descendants beneath a peerless container, sorts by item index, and reports the Group role. The converted Gallery's six definitions, Low chrome bars, options, snippets, and interactions are current. Fresh exact425x88Light/Dark comparisons remain0.53/0.42under1.0; fresh scroll recordings pass in both themes. -
2026-07-18 BreadcrumbBar current-source, accessibility, Gallery, interaction, and pixel parity: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Every substantive runtime, layout, item, peer, classic-template/theme, resource, API-test, and interaction-test blob remains byte-current after the root move; the new perf2026 dictionary preserves the setter-based contract already represented byVisualStateEx. The audit exposed a real accessibility gap: ellipsisMoreand the item localized control type are now resource-backed, while hidden-versus-rendered ellipsis peers emulate WinUIAccessibilityView.Raw/Contentthrough WPF Control/Content tree gating and peer invalidation. The unchanged two-example Gallery, click removal, reset, snippets, and strict harness are pinned. Fresh exact530x26Light/Dark comparisons remain2.53/2.33under3.0; fresh Button-Invoke recordings proveFolder1removes both trailing folders. Product/source tests pass 29/29, Gallery coverage passes 2/2 on net8/net10, and all Gallery target builds succeed. -
2026-07-18 SelectorBar current-source, accessibility, Gallery, interaction, and pixel parity: refreshed against official product commit
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Runtime, item, peer, classic/perf template, theme, resource, API-test, interaction-test, and all three converted Gallery examples remain byte-current after the root move. The audit exposed a real accessibility mismatch: the active internal ItemsView now reports List plus single optional Selection, SelectorBarItem reports ListItem plus SelectionItem with the internal List as its selection container, and the localized fallback comes from the upstreamSelectorBarItemDefaultControlNameresource. The retained outer WPF peer is Raw-only so harness IDs remain addressable without duplicating the accessible control. Fresh exact284x48Light/Dark comparisons remain1.99/2.58under3.0; fresh SelectionItem recordings proveSharedchanges from Unselected to Selected. Product/source tests pass 11/11, Gallery coverage passes 2/2 on net8/net10, and Gallery builds succeed on net462/net8/net10. -
2026-07-17 AnnotatedScrollBar pixel parity: current WinUI sources inherit common
ButtonPaddingfor the 30x19 scroll buttons and use the symbol font for the 8px arrow glyphs. ModernWpf removes its stale zero-padding override, explicitly applies the Fluent symbol face, resolves button/thumb brushes without WPF's indirect-alias fallback, and preserves zero-alpha chrome semantics. The strict proof now compares the actual52x500control; Light/Dark deltas are1.20/1.21, and the harness gate is tightened to1.5. -
2026-07-17 IconElement pixel parity: the official sample paragraph now uses
BodyTextBlockStyle, and the strict primary proof compares the actual rendered 50pxSlicesIconBitmapIcon instead of including unrelated sample text. A parent-offset viewbox makes the isolated WPF BitmapIcon artifact nonblank. Installed Gallery crops match at50x51with0.02Light/Dark deltas, and the harness gate is tightened to0.1. -
2026-07-17 RatingControl pixel parity: current
winui3/mainstill resolves the 12px caption throughCaptionTextBlockStyle/XamlAutoFontFamilyand includes the caption's actual width in the control width. ModernWpf now uses the equivalent Segoe UI Variable Small optical face and removes WPF's one-physical-pixel caption rounding excess with a DPI-aware correction. Installed Gallery crops match exactly at183x32; strict Light/Dark deltas are6.23/6.90, and the harness gate is tightened to7.0. -
2026-07-17 InfoBar pixel parity: the generated Gallery example now top-aligns the InfoBar instead of stretching it to the adjacent options column. The InfoBar style enables device-pixel snapping, and
InfoBarPanelreproduces current WinUITextBlock::MeasureOverridephysical-pixel desired-size ceilings plusm_layoutRoundingHeightAdjustmentcontent offset. The installed Gallery primary crop now matches exactly at560x95; strict Light/Dark deltas are1.33/1.46, and the harness gate is tightened to2.0. -
2026-07-17 BreadcrumbBar pixel parity: the shared WinUI font resource now resolves
Segoe UI Variable Textwith aSegoe UIfallback, BreadcrumbBar explicitly uses WinUI's default layout rounding, andContentPresenterExreproduces current WinUITextBlock::MeasureOverridephysical-pixel ceiling semantics for generated text. The installed Gallery's eight item widths now match exactly (56,89,61,84,63,63,65,49;530x26total). Strict Dark/Light primary deltas are2.33/2.53, with all residual pixels confined to WPF-vs-WinUI glyph antialiasing, and the harness gate is tightened to3.0. -
2026-05-20 ThemeShadowChrome WinUI-shaped aliases:
ThemeShadowChromenow acceptsTranslationZas a two-way alias for the existing WPF rendererDepthand aThemeShadowobject throughThemeShadowChrome.Shadowproperty-element syntax as a marker alias forIsShadowEnabled. This lets new source-backed templates read closer to WinUI'selement.Shadow = new ThemeShadow(); element.Translation.Z = ...shape while keeping the explicit WPFThemeShadowChromehost required for layout, popup insets, hit testing, opacity propagation, and the validated actual-control PNG comparison path. -
2026-07-17 ThemeShadow pixel-parity refresh: the installed-Gallery comparison now removes
ControlExamplechrome and isolates the exact272x272sourceExample3Grid. Light and Dark score0.22/0.12under a strict0.3gate, covering the card fill, corner radius, 36px source padding, and shadow envelope. -
2026-05-20 ThemeShadow actual-control parity proof:
ThemeShadowChromenow aligns childful popup shadows from the source content origin, so medium-popup layouts keep the WinUI10,2content inset while drawing the full depth-32 shadow bitmap at the source caster origin.tools/theme-shadow/WinUIReferenceCapturecontinues to host a realApplicationresource graph withXamlControlsResources;actual-controlmode now capturesMenuFlyoutPresenterby opening a real WinUIMenuFlyout.ShowAtowner path, and the ModernWpf rendered-template guard opens a real WPFMenuFlyoutbefore snapshotting the presenter. Fresh WPF snapshots, a refreshed all-nine actual-control WinUI folder,Prepare-ThemeShadowReferenceCaptures.ps1 -RequireReferencePngs, the opted-in reference-directory guard, the opted-in rendered-template PNG comparison, and the focused ThemeShadow/template guard all pass. -
2026-05-20 ThemeShadow capture provenance and actual-control extraction:
tools/theme-shadow/WinUIReferenceCapturewrites same-named.capture.txtsidecars for every generated PNG, recording the manifest target, capture mode, WinUIRenderTargetBitmappath, canvas, and ignored bounds. The capture executable supports the existing all-targetsource-geometrymode and an all-targetactual-controlpath; the helper terminates directly after capture so GUI runs do not linger.Prepare-ThemeShadowReferenceCaptures.ps1 -RequireReferencePngsandTemplateParityTests.ThemeShadowReferenceDirectoryCoversCaptureManifestWhenOptedInrequire those provenance sidecars for PNG reference folders. -
2026-05-20 ThemeShadow reference PNG proof guard:
TemplateParityTests.ThemeShadowReferenceDirectoryCoversCaptureManifestWhenOptedInnow verifies more than file presence and dimensions whenMODERNWPF_SHADOW_REFERENCE_DIRpoints at a PNG reference folder. Each PNG must have a matching.mask.txtsidecar with the manifest target name,shadow-onlykind, matching canvas size, and in-boundsIgnoredBounds; after the guard clears that caster/content region, it requires visible shadow darkening outside the mask. This catches blank or unmasked live-reference folders before the rendered-template comparison runs. -
2026-05-20 ThemeShadow live WinUI capture harness:
tools/theme-shadow/WinUIReferenceCapture/WinUIThemeShadowCapture.csprojnow builds a small WinUI app that readsdocs/theme-shadow-reference-captures.json, uses the staged.mask.txtsidecars as source-shaped caster geometry, renders real light-theme WinUIThemeShadowpixels throughRenderTargetBitmap, and writes all nine canonical*-shadow-only.pngreferences. The capture folder passes thePrepare-ThemeShadowReferenceCaptures.ps1 -RequireReferencePngspreflight and the opted-in reference-directory guard. This still does not close the parity goal: it is source-shaped live ThemeShadow capture rather than full actual-control template capture, and the rendered-template comparison currently fails first onFlyoutPresenter-shadow-onlybecause ModernWpf's centroid is shifted right/down from the live WinUI reference while the childless comparison passes. -
2026-05-20 ThemeShadow reference capture staging:
tools/theme-shadow/Prepare-ThemeShadowReferenceCaptures.ps1now readsdocs/theme-shadow-reference-captures.json, verifies the WPF snapshot corpus has all nine shadow-only PNG/metrics/mask files, copies the.mask.txtsidecars into the WinUI reference directory, and writes a capture checklist.-RequireReferencePngsmakes the script fail until all nine live WinUI PNGs are present. This stages the remaining capture work but does not close the parity goal. -
2026-05-20 ThemeShadow reference directory guard:
TemplateParityTests.ThemeShadowReferenceDirectoryCoversCaptureManifestWhenOptedInnow usesMODERNWPF_SHADOW_REFERENCE_DIRand the capture manifest to require all nine references to exist as.pngor.txtfiles, with dimensions matching the manifest. The normal no-env path stays CI-safe, but an opted-in reference run now catches incomplete or wrong-sized WinUI capture folders before the rendered-template comparison runs. -
2026-05-20 ThemeShadow reference capture manifest:
docs/theme-shadow-reference-captures.jsonnow pins the nine representative shadow-only reference targets, canonical reference filenames, canvas sizes, owning rendered-template tests, and WinUI source evidence.TemplateParityTests.ThemeShadowReferenceCaptureManifestCoversRenderedSnapshotTargetsguards the manifest. The remaining gap is narrower but still real: the manifest is the capture contract, not the live WinUI PNG capture itself. -
2026-05-20 ThemeShadow reference PNG comparison:
MODERNWPF_SHADOW_REFERENCE_DIRnow accepts same-named.pngfiles as well as.txtmetrics. PNG references are converted into the same bounds, peak darkening, shadow-pixel count, and centroid metrics, then compared with per-pixel darkening deltas across the canvas and shadow-pixel union. This removes the need to hand-author reference metric files after WinUI screenshots are captured, but the goal remains open until those live WinUI reference captures exist and any material raster differences are tuned. -
2026-05-19 ThemeShadow snapshot reference comparison: the WPF shadow snapshot exporter now writes stable key-value metric files for
shadow-onlycaptures and honorsMODERNWPF_SHADOW_REFERENCE_DIR. When that env var points at same-named WinUI reference metrics, the rendered-template shadow tests compare canvas size, bounds, peak darkening, shadow-pixel count, and centroid with bounded WPF-substitution tolerances. This makes the remaining WinUI-vs-ModernWpf screenshot calibration executable once WinUI references exist, but it still does not close the goal because those references have not been captured in this repo. -
2026-05-19 ThemeShadow WPF snapshot exporter: the rendered-template shadow guards now honor
MODERNWPF_SHADOW_SNAPSHOT_DIR. When set,LayoutCompatibilityApiTests.SourceBackedShadowTemplatesRenderVisibleShadowPixelsandSourceBackedChildlessShadowTemplatesRenderVisibleShadowPixelsexport PNGs and text metrics for the representative ModernWpf shadow surfaces they already validate. This creates the WPF-side corpus for the remaining WinUI-vs-ModernWpf screenshot comparison, but it does not close the goal by itself because the WinUI reference capture and automated image comparison are still missing. -
2026-05-19 ThemeShadow host-inventory/render guard completion:
TemplateParityTests.ProductTemplatesUseOnlyKnownThemeShadowChromeHostsnow pins the product XAMLThemeShadowChromehost inventory to the nine source-backed shadow surfaces.LayoutCompatibilityApiTests.SourceBackedShadowTemplatesRenderVisibleShadowPixelsalso coversCommandBarFlyoutoverflow-root shadow pixels andMenuFlyoutPresentervisible rendered pixels, in addition to the previous FlyoutPresenter, NumberBox, AutoSuggestBox, CommandBar, and TeachingTip cases. MenuFlyout remains a WPFContextMenuisolation case, so full left/top gutter parity stays covered by the WinUI control-master geometry guard until a live WinUI-vs-WPF screenshot harness exists. -
2026-05-19 ThemeShadow expanded rendered-template guard:
LayoutCompatibilityApiTests.SourceBackedShadowTemplatesRenderVisibleShadowPixelsnow renders additional actual source-backed chromes for AutoSuggestBox suggestions, CommandBar overflow, and TeachingTip content-root shadows, alongside the existing FlyoutPresenter and compact NumberBox popup coverage. The guard detaches real templateThemeShadowChromeinstances into deterministic white canvases and verifies visible shadow pixels beyond their arranged caster bounds. -
2026-05-19 ThemeShadow control-master geometry guard:
LayoutCompatibilityApiTests.ThemeShadowRendererMatchesWinUIControlDropShadowMastersnow pins WPF renderer geometry against source control-level MockDComp masters for Flyout, MenuFlyout, CommandBar overflow, and ContentDialog drop-shadow mode. The guard verifies the same caster sizes, source depths, shadow bitmap sizes, and content offsets exposed by the WinUIDropShadowVisualsprites. -
2026-05-19 ThemeShadow childless rendered-template guard:
LayoutCompatibilityApiTests.SourceBackedChildlessShadowTemplatesRenderVisibleShadowPixelsnow renders actual childless source-backed template chromes, coveringContentDialog.Shdwat source depth128andNavigationView.ShadowCasterat source depth16. The guard normalizes state-driven opacity/transform for the detached render pass and verifies visible WPF shadow pixels around the explicit caster slots. -
2026-05-19 ThemeShadow rendered-template guard:
LayoutCompatibilityApiTests.SourceBackedShadowTemplatesRenderVisibleShadowPixelsnow renders representative source-backed template chromes instead of only checking template shape. It coversFlyoutPresenterat source depth32with medium windowed-popup insets and the compactNumberBoxpopup at source depth16, hides the caster child to isolate the shadow layer, and verifies visible WPF shadow pixels extend beyond the arranged caster with a downward centroid. -
2026-05-19 ThemeShadow caster-opacity parity:
ThemeShadowChromenow observes the decorated childOpacityand applies it to the private WPF shadow host, matching WinUI'sThemeShadowDropShadowOpacityMockDComp master where the generatedDropShadowVisualcarries the caster opacity. Loaded chrome instances also sync opacity on render ticks so WPF opacity animations affect the shadow's effective opacity.LayoutCompatibilityApiTests.ThemeShadowChromeTracksCasterOpacityLikeWinUISourceandThemeShadowChromeTracksAnimatedCasterOpacityLikeWinUISourcerender the same source-shaped canvas at full and half caster opacity and verify the shadow darkening scales while geometry stays stable. -
2026-05-19 ThemeShadow input transparency fix:
ThemeShadowChromenow delegates point hit testing only into its decorated child so shadow-only padding regions are transparent to input, matching WinUI'sDropShadowVisual TransparentForInput=TrueMockDComp masters and hit-test coverage.LayoutCompatibilityApiTests.ThemeShadowChromeShadowVisualIsTransparentForInputLikeWinUISourcehosts a chrome and verifies top-left/lower shadow extents are skipped while the caster child remains hit-testable. -
2026-05-19 ThemeShadow dynamic corner-radius redraw guard:
LayoutCompatibilityApiTests.ThemeShadowChromeRerendersWhenCornerRadiusChangesLikeWinUISourcenow keeps one WPFThemeShadowChromeinstance alive while changing itsCornerRadius, mirroring WinUI'sThemeShadowDropShadowDynamicCornerRadiusinvalidation path. The guard compares rendered shadow stats and caster-corner pixels after rounded, square, and larger-rounded updates. WPF still represents this through circular per-cornerCornerRadius, not WinUI shapeRadiusX/RadiusY. -
2026-05-19 ThemeShadow actual-theme redraw guard:
LayoutCompatibilityApiTests.ThemeShadowChromeRerendersWhenRequestedThemeChangesLikeWinUISourcenow keeps one WPFThemeShadowChromeinstance in the WinUIThemeShadowDropShadowSystemThemeRedrawRTBsource canvas, switches its requested theme from light to dark, and compares the re-rendered dark shadow bounds, peak darkening, pixel count, and centroid against the WinUI pixel masters. This guards the real actual-theme invalidation path instead of only constructing separate light/dark chrome instances. -
2026-05-19 ThemeShadow childless caster preservation: childless
ThemeShadowChromeinstances now keep their explicit arranged size as the caster size while childful chrome hosts still reserve source shadow padding around their child. This preserves NavigationView-styleShadowCastertemplate parts whose WPF visual states setWidth/Heightdirectly.LayoutCompatibilityApiTests.ThemeShadowChromeChildlessCasterUsesExplicitSizeAsSourceCasterrenders a50x50childless caster in the WinUI pixel-master source canvas and compares light/dark shadow bounds, peak darkening, pixel count, and centroid against the same source masters. -
2026-05-19 ThemeShadow rendered pixel calibration:
ThemeShadowChromenow reserves its source shadow inset in layout and arranges the child at the source content offset, so the WPF visual tree renders the full left/top shadow extent instead of relying on clipped overflow.LayoutCompatibilityApiTests.ThemeShadowChromeRenderedPixelsTrackWinUIPixelMastersrenders an actual chrome in WinUI'sThemeShadowDropShadowSystemThemeRedrawRTBsource canvas, verifies the82x82shadow host /50x50caster-at-25,25layout, and compares light/dark rendered pixel bounds, peak darkening, pixel count, and centroid against the WinUI pixel masters. -
2026-05-19 ThemeShadow popup inset ownership: windowed-popup insets are now single-owned by
ThemeShadowChromelayout. The old popup-childMarginapplication was removed so medium popup hosts do not double-count the10,2,10,18WinUI gutter after the chrome started measuring to child size plus inset.LayoutCompatibilityApiTests.ThemeShadowChromePopupInsetsAreNotDoubleAppliedAsChildMarginguards the WPFPopuppath. -
2026-05-19 ThemeShadow source coverage guard:
docs\theme-shadow-source-coverage.mdnow maps known local WinUI 3 ThemeShadow and elevation inputs to the sharedThemeShadowChromerenderer, source-backed control template targets, official WPF Fluent stock exceptions, or documented WPF substitutions.TemplateParityTests.ThemeShadowSourceCoverageAuditCoversKnownWinUIShadowInputsguards row count, statuses, duplicate source/status pairs, and local evidence paths so new shadow work cannot rely on undocumented guesses. -
2026-05-19 FlyoutPresenter shadow source audit:
ModernWpf.Controls\Flyout\FlyoutPresenter.xamlmaps WinUI'sFlyoutPresenter::OnApplyTemplateApplyElevationEffect(first child)path by making the template root aThemeShadowChromearound the presenter surface.FlyoutPresenterApiTests.FlyoutPresenterTemplateUsesSourceThemeShadownow pins source depth32,WindowedPopupInsetMode=Medium, popup inset padding, corner-radius binding, and theIsDefaultShadowEnabledtoggle path. -
2026-05-19 AutoSuggestBox suggestions shadow source audit:
ModernWpf.Controls\AutoSuggestBox\AutoSuggestBox.xamlalready maps WinUI'sApplyElevationEffect(m_tpPopupPart.AsOrNull<IUIElement>().Get())path by making the suggestions popup child aThemeShadowChromearoundSuggestionsContainer.AutoSuggestBoxApiTests.SuggestionsPopupUsesSourceThemeShadownow pins the source depth32,WindowedPopupInsetMode=Medium, popup inset padding, and corner-radius binding so future popup/template work cannot regress the source shadow target. -
2026-05-19 CommandBar overflow shadow wrapper source port:
ModernWpf.Controls\CommandBar\CommandBar.xamlnow keepsOverflowContentRootas the measured popup root and moves the WPFThemeShadowChrometoSecondaryItemsControlShadowWrapper, matching WinUI'sApplyElevationEffect(SecondaryItemsControlShadowWrapper)target while retaining depth32,WindowedPopupInsetMode=Medium, and the sourceSecondaryItemsControlcorner-radius binding.CommandBarApiTests.CommandBarOverflowShadowUsesSourceWrapperguards the template shape. -
2026-05-19 ThemeShadow WinUI pixel-master PNG guard:
LayoutCompatibilityApiTests.ThemeShadowChromeRenderedPixelsTrackWinUIPixelMasterPngsWhenSourceRootProvidednow honorsMODERNWPF_WINUI_SOURCE_ROOTand reads the checked-in WinUIThemeShadowDropShadowSystemThemeRedrawRTB.Light.1.master.png/Dark.1.master.pngfiles fromsrc\dxaml\test\resources\masters. The guard masks out the opaque source caster, derives shadow metrics from the PNG pixels, and compares the current WPF render against those source-derived metrics so the previous copied numeric baseline is backed by the local WinUI source tree. -
2026-05-19 ThemeShadow reference mask sidecars: the rendered-template shadow snapshot exporter now writes same-named
.mask.txtsidecars for shadow-only captures, recording the caster/contentIgnoredBoundsin the capture canvas. PNG reference comparison reads those sidecars fromMODERNWPF_SHADOW_REFERENCE_DIRand masks that region in both the WinUI reference image and ModernWpf snapshot before deriving metrics and image deltas, so future WinUI reference captures can include the opaque source surface without polluting shadow-only comparison.docs\theme-shadow-reference-captures.jsonnow pins the.mask.txtconvention. -
2026-05-18 TeachingTip content shadow source port:
ModernWpf.Controls\TeachingTip\TeachingTip.xamlnow wraps the sourceContentRootGridpart inContentRootGridShadowChrome, using the sharedThemeShadowChromerenderer at depth32withWindowedPopupInsetMode=Medium.TeachingTip.csnow animates the WPF shadow depth from0.01to32during open and back toward0.01during close, representing the WinUIm_tipShouldHaveShadow=true,m_contentElevation=32, and translation-Z animation path. The debug/test-only tail shadow experiment remains unported.TeachingTipApiTests.TeachingTipContentRootUsesSourceThemeShadowguards the template shape. -
2026-05-18 CommandBarFlyout overflow shadow source port:
ModernWpf.Controls\CommandBarFlyout\CommandBarFlyout.xamlnow ports WinUI'sOuterOverflowContentRootShadow/NoOuterOverflowContentRootShadowstates through anOuterOverflowContentRootShadowChromewrapper at depth32withWindowedPopupInsetMode=Medium.CommandBarFlyoutCommandBar.ClearShadowandUpdateShadownow drive those states like source: no-primary-command flyouts use the overflow-root shadow, while primary-command flyouts use it only when the overflow opens downward.CommandBarFlyoutApiTests.PresenterShadowStaysDisabledWithoutPrimaryCommandsLikeWinUISourceandFlyoutCommandBarAvailableAndCombinedStatesUseVisualStateSettersguard the behavior and template state targets. -
2026-05-18 MenuFlyoutPresenter shadow source port:
ModernWpf.Controls\MenuFlyout\MenuFlyout.xamlno longer mapsIsDefaultShadowEnabledto WPFContextMenu.HasDropShadow. It now uses the sharedThemeShadowChromepresenter shadow at depth32withWindowedPopupInsetMode=Medium, keepsHasDropShadow=False, and ports the source menu-flyout presenter resources andBackgroundSizing=InnerBorderEdgechrome while retaining WPFContextMenuitem hosting as the platform substitute.MenuFlyoutApiTests.PresenterShadowFollowsWinUISourceguards the opened presenter tree. -
2026-05-18 ThemeShadow 125% popup master:
LayoutCompatibilityApiTests.ThemeShadowRendererMatchesWinUIMockDCompMasterGeometrynow includesFoundation_Graphics_ThemeShadowTests_ThemeShadowDropShadowWindowedPopup125.Shadow.master.xml, pinning the 125% source popup geometry where WinUI renders a50.4x50.4DIP caster into an82.4x82.4DIP shadow sprite. This guards DPI rounding in the WPF software renderer. -
2026-05-18 ThemeShadow visual-render guard:
LayoutCompatibilityApiTests.ThemeShadowChromeRendersHollowCenteredVisualShadownow renders an actualThemeShadowChromethrough WPFRenderTargetBitmapand samples the hollow center plus outer shadow pixels. This complements the internal renderer metrics by guarding the visual-tree path that templates use. -
2026-05-18 ThemeShadow raw-shadow guard:
TemplateParityTests.ProductTemplatesDoNotUseDropShadowEffectOutsideOfficialWpfFluentStockShadowsnow scans product XAML and rejects raw WPFDropShadowEffectoutside the documented official WPF Fluent stock-control exceptions (ComboBox,DatePicker,MenuItem, andToolTip). WinUI-source-backed controls should render shadows through the sharedThemeShadowChromepath so depth, popup insets, hollow-center behavior, and source-backed tests stay centralized. -
2026-05-18 ThemeShadow source recipe port:
ThemeShadowChromeis no longer implemented as two WPFBorderlayers withBlurEffect. It now hosts a cached depth-driven software alpha-mask renderer that keeps existingThemeShadowChrometemplate usage working while porting WinUI'sGetDropShadowRecipedepth, blur, offset, inset, hollow-center, and light/dark opacity formulas. This follows source depth semantics such asNumberBoxPopupShadowDepth=16,ContentDialogdrop-shadow-modebaseElevation=128, CommandBarFlyout drop-shadow paths, NavigationView pane overlay shadow depth, and WinUI windowed Popup tight insets (Small=4,1,4,8,Medium=10,2,10,18) for popup-hosted surfaces. The renderer now also exposes an internal bitmap-profile probe so tests can pin WPF peak-alpha, alpha-bounds, non-zero-pixel, and centroid metrics, and it is mapped against WinUI MockDComp geometry and pixel-master bounds before external full-screenshot comparison. The remaining WPF substitution is rasterization: WPF still lacks compositorThemeShadow, so visual screenshot calibration remains the next step. Seedocs\theme-shadow-winui3-parity.md. -
2026-05-18 CornerRadius attached-property cleanup: ModernWpf uses WPF's built-in
System.Windows.Controls.Border.CornerRadiusPropertydirectly for generated control APIs and template owners that can consume it.ControlHelper.CornerRadiusremains only as an explicit WPF template-part carrier whereBorder.CornerRadiuscannot be set or bound cleanly, replacing previousTagcarriers in NumberBox and ColorPicker. Templates no longer useBorder.CornerRadius="..."as pseudo-attached XAML on arbitrary elements. -
2026-05-18 Repeater WPF
ScrollViewer.ChangeViewsubstitute:docs\repeater-winui3-source-audit.mdnow records that the old unconditionaltruereturn/TODO has been replaced with source-shaped handled/no-op behavior. The WPF substitute clamps requested offsets to the current scrollable range, reportstrueonly when an offset change is applied, rejects NaN/infinite offset or zoom values, and documents valid zoom-only requests as an unsupported WPF no-op. -
2026-05-18 ModernWpf core control coverage guard:
docs\modernwpf-core-control-source-coverage.mdnow maps everyModernWpf\ModernWpfControlsResources.xamlmerged dictionary to source-audit evidence.TemplateParityTests.ModernWpfCoreControlSourceCoverageAuditCoversControlsResourcesInventoryparsesModernWpfControlsResources.xamldirectly, rejects missing/extra/duplicate rows, checks explicit source-backed/platform-mapping/shared-resource status buckets, and requires each row to point at existing evidence. -
2026-05-18 ModernWpf core resource coverage guard:
docs\modernwpf-core-resource-source-coverage.mdnow maps everyModernWpf\Themes\Generic.xamlmerged resource to source-audit evidence, complementing the official WPF Fluent stock-style coverage and theModernWpf.Controlsgeneric-resource coverage.TemplateParityTests.ModernWpfCoreSourceCoverageAuditCoversGenericResourceInventoryparsesGeneric.xamldirectly, rejects missing/extra/duplicate rows, checks explicit source-backed/substitution/compatibility status buckets, and requires each row to point at existing evidence. -
2026-05-18 WinUI 3 control source coverage guard:
docs\winui3-control-source-coverage.mdnow maps everyModernWpf.Controls\Themes\Generic.xamlmerged resource to source-audit evidence, complementingdocs\official-fluent-style-coverage.mdfor stock WPF controls.TemplateParityTests.WinUIControlSourceCoverageAuditCoversGenericResourceInventoryparsesGeneric.xamldirectly, rejects missing/extra/duplicate rows, checks explicit source-backed status buckets, and requires each row to point at an existing source-audit document. -
2026-05-18 NavigationView shadow-caster state target completion:
docs\navigationview-winui3-source-audit.mdnow records the WinUIShadowCastertemplate target,TemplateSettings.OpenPaneLengthclamp path, andPaneOverlayShadowDepth=16shadow depth. The WPF template usesThemeShadowChromeas theShadowCasterpart with a WPFTranslateTransform, compact-list and pane-collapsed states setShadowCaster.Width, pane-not-overlaying setsShadowCaster.Opacity, andRootSplitView.OpenPaneLengthfollows the source template-setting path. WinUI compositorThemeShadowremains a renderer/platform substitution rather than a missing visual-state setter target. -
2026-05-18 CommandBarFlyout/AppBar input-mode completion:
docs\commandbarflyout-winui3-source-audit.mdanddocs\appbarbutton-winui3-source-audit.mdnow record the WPF touch/default input-mode substitute forCommandBarFlyoutCommandBar.CommandBarFlyoutCommandBarcaptures the input mode used to open secondary commands,CommandBarFlyoutOverflowPanelkeeps an owner back-reference so layout updates preserve that mode, andCommandBarFlyoutApiTests.FlyoutSecondaryCommandsUseTouchInputModeWhenOpenedByTouchLikeWinUISourceguards that secondaryAppBarButton/AppBarToggleButtonentries enterTouchInputModewhile primary commands remain default. Gamepad/remote remains a platform gap. -
2026-05-18 SplitButton default-template listener cleanup:
docs\splitbutton-winui3-source-audit.mdnow records that the stale default-templateVisualStateGroupListenerbridge has been deleted. The default SplitButton template already carried source-shapedVisualStateEx.Setters, and the remaining unused listener had no WinUI source equivalent;SplitButtonApiTests.DefaultTemplateDoesNotUseLegacyVisualStateGroupListenerguards against reintroducing it. -
2026-05-18 AppBarButton/AppBarToggleButton normal CommandBar input-mode completion:
docs\appbarbutton-winui3-source-audit.mdanddocs\commandbar-winui3-source-audit.mdnow record the WinUICommandBar::UpdateInputDeviceTypeUsedToOpenpath. NormalCommandBarcaptures WPF touch/default input for overflow opens, propagates that mode throughCommandBarOverflowPanelto secondary AppBar buttons, keeps primary commands inInputModeDefault, and resets moved/closed overflow commands. Gamepad/remote input-mode selection remains a documented platform gap. -
2026-05-18 SplitButton command-bar source-setter completion:
docs\splitbutton-winui3-source-audit.mdnow records the WinUISplitButtonCommandBarStylestate-setter slice. The command-bar style no longer uses aVisualStateGroupListenerplus WPFControlTemplate.Triggersrelay for source states; it now usesVisualStateEx.Settersfor common, checked, touch/key, and secondary-button placement states while keeping WPFBordersubstitutes for source command-bar background targets. The SplitButton row indocs\winui-visualstate-setters-audit.mdis nowConverted. -
2026-05-18 ColorPicker slider source-style completion:
docs\colorpicker-winui3-source-audit.mdnow records theColorPickerSliderStylesource-template slice. The previous stock WPF slider fallback was replaced with a color-picker-owned template carrying the source thumb chrome,CommonStates, focus-engagement state names,ColorPickerSlider*resources, and a WPFPART_Tracksubstitute that keeps slider behavior functional. The ColorPicker row indocs\winui-visualstate-setters-audit.mdis nowConverted. -
2026-05-18 BreadcrumbBar focus-target setter completion:
docs\breadcrumbbar-winui3-source-audit.mdnow records the remaining WinUI item-template focus-target setters.EllipsisDropDownandLastItemstates now port WinUIControl.IsTemplateFocusTarget/FocusVisualMarginthroughFocusVisualHelper, the source item button and last-item presenter carry the source focus metadata, and the BreadcrumbBar row indocs\winui-visualstate-setters-audit.mdis nowConverted. -
2026-05-18 PagerControl source button style completion:
docs\pagercontrol-winui3-source-audit.mdnow records the remaining source style delta for pager-owned buttons.PagerControlPageNavigationButtonStyleandPagerControlNumberPanelButtonStyleno longer rely on genericDefaultButtonStyle; they now use source-shaped templates withVisualStateEx.Setters, mirroredFontIconnavigation glyphs,ContentPresenterExpage-number chrome, and a template-local style alias so generated number-panel buttons receive the pager-owned style. The PagerControl row indocs\winui-visualstate-setters-audit.mdis nowConverted. -
2026-05-18 InfoBar close-button source-scope correction:
docs\infobar-winui3-source-audit.mdnow records that WinUI'sInfoBarCloseButtonStyle BasedOn="{StaticResource DefaultButtonStyle}"cannot be used as a raw WPF resource-scope copy from the InfoBar dictionary. ModernWpf keeps the source close button content/resource aliases and now uses a self-contained WPF close-button style that mirrors the default button chrome/template/trigger shape.docs\hyperlinkbutton-winui3-source-audit.mdalso records the source-namedDefaultHyperlinkButtonStylekey while leaving the InfoBar action-slot base-style reference as a documented WPF scope substitution. -
2026-05-18 official WPF Fluent style coverage guard:
docs\official-fluent-style-coverage.mdmaps every localPresentationFramework.Fluent\Stylessource file to a ModernWpf artifact or explicit exception.TemplateParityTests.OfficialWpfFluentStyleCoverageAuditCoversSourceFolderInventorynow fails if a source file is missing, duplicated, assigned an unknown status, or points at a missing ModernWpf artifact. This is the safe path for bulk official Fluent copying: backport stock WPF styles aggressively, but keep folded files, the custom Window shell, and excluded non-goal controls explicit. -
2026-05-18 RatingControl automation warning cleanup:
docs\ratingcontrol-winui3-source-audit.mdnow records the C# automation-peer substitution for WinUI's unused C++ratingStringlocal.RatingControlSourceAuditTestskeeps the source-backed value-provider/resource behavior covered while preventing the unused local from returning to the C# port. -
2026-05-18 Repeater source-audit suppression cleanup:
docs\repeater-winui3-source-audit.mdnow coversModernWpf.Controls\Repeater\GlobalSuppressions.csas part of the source-shaped Repeater port. The old<Pending>analyzer justifications were replaced with explicit source-parity reasons for preserving source-shaped fields, signatures, animation hooks, viewport hooks, and WPF substitute signatures;RepeaterSourceAuditTestsprevents those suppressions from drifting back to ambiguous pending debt. -
2026-05-18 Window official WPF Fluent shell audit:
docs\window-wpf-fluent-source-audit.mdmaps WPF's stockWindowstyle againstPresentationFramework.Fluent. ModernWpf does not copy officialWindow.xamlwholesale because its style ownsWindowTitleBarControl,WindowChrome, attached title-bar properties, high-contrast caption border, andWindowHelper.FixMaximizedWindow; the compatible surface now uses officialWindowForeground/WindowBackgroundaliases and a plain WPFContentPresenterfor the content slot. The custom Light/Dark client border also mirrors Windows' DWMColorPrevalencesetting through the existing system-accent palette and setting/colorization message hook while retaining applicationWindowBorderoverrides. -
2026-07-17 TitleBar Gallery pixel-parity audit:
docs\titlebar-winui3-gallery-parity.mdmaps the retained preview against current WinUI TitleBar template metrics and official Gallery parent-surface ownership without reclassifying ModernWpf's legacy WPF shell as the newer WinUI TitleBar API. Exact470x48installed-Gallery crops now pass at Light0.74and Dark0.82under a strict1.0gate. -
2026-05-18 stock foundation/navigation official WPF Fluent style port:
docs\foundation-navigation-wpf-fluent-source-audit.mdmapsContentControl,HeaderedContentControl,ItemsControl,UserControl,Page,Frame,NavigationWindow,TextBlock, and genericThumbstyles againstPresentationFramework.Fluent. ModernWpf now merges the official WPF Fluent stock foundation/navigation dictionaries, adds required shell theme aliases, alignsTextStyles.xamlto the official TextBlock style shape while retaining legacy text aliases, and documents why ModernWpf's customWindow.xamlremains a separate shell feature covered bydocs\window-wpf-fluent-source-audit.md. -
2026-05-18 stock DataGrid official WPF Fluent style port:
docs\datagrid-wpf-fluent-source-audit.mdmaps WPF's stockDataGridstyle againstPresentationFramework.Fluent. The previous ModernWpf-specificDataGridHelper,DataGridRowHelper,DataGridCellPresenter,ContentPresenterEx,FontIconFallback, row-group header, and expanded-cell template guesses were deleted for the stock DataGrid path; ModernWpf now imports the official WPF DataGrid templates, localizedFallbackBrushConverter, and official DataGrid theme aliases with documentedmscorlibandBorder.CornerRadiussubstitutions. -
2026-05-18 stock TabControl official WPF Fluent style port:
docs\tabcontrol-wpf-fluent-source-audit.mdmaps WPF's stockTabControlandTabItemstyles againstPresentationFramework.Fluent. The previous WinUITabView-shaped default style,TabItemHelper,TabControlHelper,VisualStateEx,ThemeShadowChrome, andContentPresenterExstock-control guesses were deleted; ModernWpf now imports the official WPF templates with theme aliases for the official TabView-named brush keys andDefaultControlFocusVisualStyle. -
2026-08-08 Preview 5 TabView source port:
docs\tabview-winui3-source-audit.mdaddsModernWpf.Controls.TabViewandTabViewItemas a separate current-WinUI-shaped control family without changing stock WPFTabControl. The port covers explicit and templated data items, content and selection fallback, close ownership, equal/content/compact widths, overflow, keyboard focus and accelerators, automation selection/scroll/collection notifications, drag/reorder, and the documented application-owned WPFWindowtear-out/rejoin sequence. The Gallery replaces the retired generated facsimile with ten real-control examples and dedicated behavior/visual routing. -
2026-08-10 Preview 6 ItemsView foundations:
docs\itemcontainer-winui3-source-audit.md,docs\linedflowlayout-winui3-source-audit.md, anddocs\itemsview-scrolling-wpf-adaptation.mdpin product23a73be03d194ea0ece97da71de98b6b53021b70and Galleryb78c440193aab788215888561e45adf72da848cb. ModernWpf adds the source-shaped publicItemContainer,LinedFlowLayout, item-collection transition family, ItemsRepeater provider integration, and an internal WPF ScrollViewer/controller bridge. Realization, recycling, selection, accessibility, layout, source-range metadata, line locking, transitions, and external-controller behavior are covered without publishing partialItemsView,ScrollView, orScrollPresentershells. -
2026-05-18 stock ListBox / ListView / GridView official WPF Fluent style port:
docs\listbox-listview-wpf-fluent-source-audit.mdmaps WPF's stockListBox,ListBoxItem,ListView,ListViewItem, andGridViewstyles againstPresentationFramework.Fluent. The previous stock-style WinUI-likeContentPresenterEx,FocusVisualHelper,ScrollViewerEx, and selection-active trigger guesses were deleted for these stock controls; ModernWpf now imports the official split dictionaries with documented substitutions formscorlib,Border.CornerRadius, the existing GridView converter, and theme aliases. The separate customModernWpf.Controls.ListViewBasefamily remains WinUI-source-backed underdocs\listview-winui3-source-audit.md. -
2026-05-18 stock TreeView official WPF Fluent style port:
docs\treeview-wpf-fluent-source-audit.mdmaps WPF's stockTreeViewandTreeViewItemstyles againstPresentationFramework.Fluent. The previous stock-style WinUI-likeTreeViewItemHelper, indentation helper,VisualStateEx,ContentPresenterEx,FontIconFallback, and selected-state setter matrix were deleted for these stock controls; ModernWpf now imports the official split dictionaries with documented substitutions formscorlib,Border.CornerRadius, dependency order, and retained legacy density aliases. -
2026-05-18 stock Calendar / DatePicker official WPF Fluent style port:
docs\calendar-datepicker-wpf-fluent-source-audit.mdmaps WPF's stockCalendarandDatePickerstyles againstPresentationFramework.Fluent. The previous WinUICalendarView/CalendarDatePickerstock-style mapping,VisualStateExstate groups,ContentPresenterExpresenter slots, andDatePickerHelperstate driver were deleted for these stock controls; ModernWpf now imports the official WPF templates with documented substitutions formscorlib,Border.CornerRadius, context-menu resource placement, and theme aliases. -
2026-05-18 Button official WPF Fluent style port:
docs\button-wpf-fluent-source-audit.mdmaps WPF's styled platformButtonagainstPresentationFramework.Fluent. The previous WinUIVisualStateExhelper template was deleted for stock Button; default and accent button chrome now uses official WPFControlTemplate.Triggers,DefaultButtonStyletargetsButtonBase, accent is self-contained, and ModernWpf-onlySubtleButtonStylekeeps its public resource aliases while adopting the same trigger/template shape. -
2026-05-18 RadioButton official WPF Fluent style port:
docs\radiobutton-wpf-fluent-source-audit.mdmaps WPF's styled platformRadioButtonagainstPresentationFramework.Fluent. The previous WinUIVisualStateExhelper template was deleted for stock RadioButton; checked, disabled, pointer-over, pressed, and right-to-left behavior now uses official WPFTrigger/MultiTriggerentries, WPFMouseOverstate naming, and a WPFContentPresenter. -
2026-07-18 RepeatButton current-source and pixel lock:
docs\repeatbutton-wpf-fluent-source-audit.mdverifies that current dotnet/wpfmainFluent blobs remain byte-identical to the audited stock-control template and maps the live sample to current WinUI Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. The source112x32button and common240x32click-output row now have strict exact-size gates; Light passes at3.23/8.79and Dark at2.55/10.71. The output comparison resolves WinUI's realControl1OutputID instead of silently cropping the button, while source Button/Text automation roles, Invoke, polite live setting, andLiveRegionChangedbehavior are pinned. -
2026-07-18 ToggleButton current-source and pixel lock:
docs\togglebutton-wpf-fluent-source-audit.mdverifies that current dotnet/wpfmainFluent blobs remain byte-identical to the audited stock template and maps the sample to current WinUI Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87. Exact107x32resting crops pass at Light2.98/ Dark2.62under a3.0gate; exact127x52checked crops pass at6.31/6.98under7.0. Both apps must now transition Off to On through UIA and expose source outputOn; Button/Text automation roles and the Toggle provider are pinned. -
2026-05-18 Slider official WPF Fluent style port:
docs\slider-wpf-fluent-source-audit.mdmaps WPF's styled platformSlideragainst officialPresentationFramework.Fluent. The previous WinUIVisualStateExhelper port was deleted; the template now follows the official WPF Fluent trigger model, WPFMouseOverthumb state, selection-range trigger behavior, and 20px thumb metrics. -
2026-05-18 CheckBox official WPF Fluent style port:
docs\checkbox-wpf-fluent-source-audit.mdmaps WPF's styled platformCheckBoxagainstPresentationFramework.Fluent. The previous WinUIVisualStateExhelper template andCheckBoxHelperstate driver were deleted for stock CheckBox; checked, indeterminate, disabled, pointer-over, pressed, and empty-content behavior now uses official WPFTrigger/MultiTriggerentries, WPF text glyphs, and a WPFContentPresenter. -
2026-05-18 RichTextBox official WPF Fluent style port:
docs\richtextbox-wpf-fluent-source-audit.mdmaps WPF's styled platformRichTextBoxagainstPresentationFramework.Fluent. The previous WinUI-like header, placeholder, description,ContentPresenterEx, andRichTextBoxHelperpath was deleted for stock RichTextBox; chrome now uses official WPFControlTemplate.Triggers,ContentBorder, andPART_ContentHost, with documented ModernWpf substitutions for text context menu, validation adorner routing, and corner radius. -
2026-05-18 TextBox / PasswordBox official WPF Fluent style port:
docs\textbox-passwordbox-wpf-fluent-source-audit.mdmaps WPF's stockTextBox,TextBoxBase, andPasswordBoxstyles againstPresentationFramework.Fluent. The previous WinUI-like header, placeholder, description, reveal-button, helper visual-state, andContentPresenterExtemplate branches were deleted for these stock controls; chrome now uses official WPFControlTemplate.Triggers,ContentBorder,PART_ContentHost, and the official TextBox clear-button layout, with documented substitutions for text context menus, validation routing, corner radius, the older-target clear-button click hook, andDataGridTextBoxStyle. -
2026-05-18 ToolTip official WPF Fluent style port:
docs\tooltip-wpf-fluent-source-audit.mdmaps WPF's styled platformToolTipagainstPresentationFramework.Fluent. The previous WinUI-likeThemeShadowChrome/ContentPresenterExchrome surface was deleted for stock ToolTip; the template now uses official WPFBorder, plain WPFContentPresenter, system status font resources,DropShadowEffect, and the official tooltip foreground/background aliases. -
2026-05-18 Label official WPF Fluent style port:
docs\label-wpf-fluent-source-audit.mdmaps WPF's styled platformLabelagainstPresentationFramework.Fluent. The previous ModernWpfBorder/ContentPresenterExtemplate and disabled trigger were deleted for stock Label; the style now follows official WPF Fluent's setter-only surface and officialLabelForegroundtheme alias. -
2026-05-18 GroupBox official WPF Fluent style port:
docs\groupbox-wpf-fluent-source-audit.mdmaps WPF's styled platformGroupBoxagainstPresentationFramework.Fluent. The previous ModernWpfContentPresenterExheader/content slots and spacing guesses were deleted for stock GroupBox; the template now uses official WPFBorder,Grid, two plain WPFContentPresenterslots, official GroupBox metrics, and official GroupBox theme aliases. -
2026-05-18 StatusBar official WPF Fluent style port:
docs\statusbar-wpf-fluent-source-audit.mdmaps WPF's styled platformStatusBarandStatusBarItemagainstPresentationFramework.Fluent. The previous ModernWpfContentPresenterExStatusBarItem slot and old disabled foreground guess were deleted for stock StatusBarItem; the style now uses the official WPF StatusBar setter surface, official separator chrome, plain WPFContentPresenter, disabled item triggers, and official StatusBarItem theme aliases. -
2026-05-18 ResizeGrip official WPF Fluent style port:
docs\resizegrip-wpf-fluent-source-audit.mdmaps WPF's styled platformResizeGripagainstPresentationFramework.Fluent. The previous ModernWpf tiledPath/DrawingBrushresize glyph and scrollbar-size metrics were deleted for stock ResizeGrip; the template now uses official WPFTextBlockglyph chrome, official size/glyph resources,SymbolThemeFontFamily, and the officialResizeGripForegroundtheme alias. -
2026-05-18 GridSplitter official WPF Fluent style port:
docs\gridsplitter-wpf-fluent-source-audit.mdmaps WPF's styled platformGridSplitteragainstPresentationFramework.Fluent. The previous ModernWpf solid bar and preview-style guess were deleted for stock GridSplitter; the template now uses the official WPFBorder/PART_Thumbrectangle shape, official metrics, WPF triggers for hover/drag/disabled/orientation, and officialGridsplitter*theme aliases. -
2026-05-18 Hyperlink official WPF Fluent style port:
docs\hyperlink-wpf-fluent-source-audit.mdmaps WPF's styled platformHyperlinkagainstPresentationFramework.Fluent. The previous ModernWpf pressed-helper trigger, cursor trigger, hover secondary color, and unused underline resource were deleted for stock Hyperlink; the style now follows official WPF Fluent's setter/trigger surface, including underline removal on pointer-over andHyperlinkForegroundDisabled. -
2026-05-18 GroupItem official WPF Fluent style port:
docs\groupitem-wpf-fluent-source-audit.mdmaps WPF's styled platformGroupItemand grouped-header data template againstPresentationFramework.Fluent. The previous ModernWpfListViewHeaderItemwrapper,DefaultGroupItemStylekey, andOverridesDefaultStyleguess were deleted for stock GroupItem; the style now uses official WPFContentPresenter/ItemsPresentertemplate shape and the officialCollectionViewGroup.Namedata template. -
2026-05-18 Menu family official WPF Fluent style port:
docs\menu-family-wpf-fluent-source-audit.mdmaps WPF's stockMenu,ContextMenu, andMenuItemstyles againstPresentationFramework.Fluent. The previous ModernWpfVisualStateEx,ContentPresenterEx,BorderEx,ThemeShadowChrome,MenuPopup, and menu-helper guesses were deleted for these stock controls; the styles now use official WPF role templates,Popupsubmenu hosts, plain WPF presenters, and official menu/context/flyout theme aliases. -
2026-05-18 ToolBar family official WPF Fluent style port:
docs\toolbar-family-wpf-fluent-source-audit.mdmaps WPF's stockSeparator, genericThumb,ToolBar, andToolBarTraystyles againstPresentationFramework.Fluent. ModernWpf now ships the official WPF Fluent toolbar family throughStockControlsResources, with documented substitutions for split-dictionaryStaticResourcedependency lookup, older-target thumb corner radius, and the missing upstreamMenuBorderColorDefaultBrushalias. -
2026-05-18 stock ProgressBar official WPF Fluent style port:
docs\stock-progressbar-wpf-fluent-source-audit.mdmaps WPF's stockProgressBarstyle againstPresentationFramework.Fluent. The previous stock-style wrapper that instantiatedModernWpf.Controls.ProgressBarwas deleted; the stock WPF style now uses the official WPF FluentTemplateRoot,TrackBorder,PART_Track,PART_Indicator,Indicator, andAnimationvisual tree with official WPFDeterminate/Indeterminatestates and orientation / indeterminate triggers. The separateModernWpf.Controls.ProgressBarremains WinUI-source-backed underdocs\progressbar-winui3-source-audit.md. -
2026-05-18 ScrollViewer official WPF Fluent style port:
docs\scrollviewer-wpf-fluent-source-audit.mdmaps WPF's stockScrollViewerdefault style againstPresentationFramework.Fluent. The stock default style no longer carries the previous ModernWpf focus, border, background, corner-radius, automation-id, or explicit scroll-content guesses; the default template now uses the official WPF Fluent grid shape withPART_ScrollContentPresenter,PART_VerticalScrollBar, andPART_HorizontalScrollBar. ModernWpf-specificTextControlContentHostStyleis retained as a documented support resource for text-entry templates. -
2026-05-18 ScrollBar official WPF Fluent style port:
docs\scrollbar-wpf-fluent-source-audit.mdmaps WPF's stockScrollBarprimitive style againstPresentationFramework.Fluent. The previous WinUI-derived auto-hide, panning-thumb,ScrollBarHelper, and setter-backed visual-state template guesses were deleted for the stock control; the style now uses official WPF Fluent line-button, page-button, thumb, vertical template, horizontal template, orientation-trigger, and pointer-over expansion behavior, with a documentedBorder.CornerRadiussubstitution for older WPF targets. -
2026-05-17 ListView / GridView source port:
docs\listview-winui3-source-audit.mdmapsListViewBase, item interaction, ListViewItem/GridViewItem source state names, common styles, and upstream tests against local WinUI 3 source. The old WPF trigger-driven guessed item visual implementation was deleted in favor ofVisualStateEx.Setters, sourceCommonStatesand multiselect state names, source own-containerItemClickbehavior, and brush-typed focus visual properties; WPF substitutions are documented forListViewItemPresenter, duplicate visual-state names, and WPFListBoxItemselection. -
2026-07-18 GridView/ListView current-source and accessibility refresh: the custom family is pinned to official product
de3e767333c2f0717a6a70cb22bd192ced5ad885and Gallery29f62479d5c046a0b854a5868e5a7cd484572d87. The shared peers now expose currentListView/GridViewandListViewItem/GridViewItemclass names, explicit List/ListItem roles, and Invoke only whileIsItemClickEnabledis true. Current source history adds only an allocation-only dragged-items reserve and equivalent perf2026 setter resources; the converted Gallery retains its three current SampleDefinition examples. Fresh exact657x412crops pass the strict2.0gate at Light1.61and Dark1.60; requiredYou clicked Item 1.crops pass the8.0raster and four-pixel metric gates at6.40/6.64, with fresh Light/Dark recordings proving selection and output change. -
2026-07-25 ListView/GridView touch-panning completion: issue #343 reproduced because both custom collection styles left the WPF
ScrollViewer.PanningModeattached property atNone. The styles now useBoth; each templatedScrollViewerExbinds the mode from its parent and enters WPF's native touch-manipulation scrolling path while scrollbar visibility continues to constrain the available axes. -
2026-07-26 GridView horizontal-wheel completion: issue #162 reproduced with horizontal overflow and no vertical extent because WPF maps mouse-wheel input only to its vertical scrolling path.
ScrollViewerExnow preserves vertical priority and otherwise delegates to WPFIScrollInfo.MouseWheelLeft/MouseWheelRight, retaining platform scroll units and virtualizing-panel behavior. The exact customGridViewregression is locked inListViewApiTests. -
2026-07-19 VariableSizedWrapGrid / WrapGrid / ItemsWrapGrid current-source refresh:
docs\variablesizedwrapgrid-winui3-source-audit.mdpins 17 official product blobs at commitde3e767333c2f0717a6a70cb22bd192ced5ad885; every blob is byte-identical across the old/current roots. Source-derived geometry tests retain first-item sizing, wrapping, spans, alignment, and finite occupancy; current Gallery has no standalone family page, while its GridView customization still consumes a live MaxItemsWrapGrid. Native recycling/cache/group/keyboard services remain explicit WPF boundaries. -
2026-05-18 Expander official Fluent replacement:
docs\expander-wpf-fluent-source-audit.mdmaps stock WPFExpandertoPresentationFramework.Fluent\Styles\Expander.xaml. The prior WinUI-shapedVisualStateEx/ToggleButtonHelper/ContentPresenterExtemplate guesses were deleted because official WPF Fluent is the primary source for stock WPF controls. -
2026-05-17 Repeater / ItemsRepeater layouts whole-family source audit:
docs\repeater-winui3-source-audit.mdmapsItemsRepeater,ViewportManager, layouts, item-template/recycle/source-view helpers, selection model, and upstream API tests against local WinUI 3 source. The files were already source-derived rather than guessed WPF wrappers; this slice closes the stale WinUI 2-era classification and ports the missing sourceStackLayoutmeasure-cycle guard plus viewportGetLayoutExtenthook. -
2026-05-17 MenuBar whole-control source port:
docs\menubar-winui3-source-audit.mdmapsMenuBar,MenuBarItem,MenuBarItemFlyout, default style, automation peers, and upstream tests against local WinUI 3 source. ModernWpf deleted the guessed WPFMenu/MenuItemwrapper,MenuBarStyleHelper, and test-only shim; the WPF port now owns the source-shaped item collection,ItemsControltemplate host, flyout item mirroring, source-style visual states throughVisualStateEx.Setters, and MenuBar/MenuBarItem automation peers. -
2026-07-18 IconSource / ImageIcon current-source and pixel refresh:
docs\iconsource-imageicon-winui3-source-audit.mdpins the family to official commitde3e767333c2f0717a6a70cb22bd192ced5ad885. ModernWpf already used current WinUI's optimized direct Image child, and now also enforces base IconSource Foreground application for custom sources and ports the missingSharedHelpers.MakeIconElementFrom(ImageIconSource)branch. Dedicated bitmap ImageIcon comparisons use exact100x89crops and pass the strict2.0gate at Light1.49and Dark1.17. -
2026-07-18 ProgressBar current whole-control refresh:
docs\progressbar-winui3-source-audit.mdpinsProgressBar, template settings, automation peer, generated API, template/theme resources, API/interaction tests, and the current two-example Gallery surface. ModernWpf follows source visibility-gated indeterminate state selection, border-aware width math, paused/error sizing, animation keyframes, and status automation-name prefixing. The documented WPF substitutions now include the DPI-aware, cap-inset one-scanline overlay that reduces exact130x3Light/Dark control crops to0.43without changing source geometry. The separate stock WPF ProgressBar remains owned by its Fluent audit and route. -
2026-05-17 LayoutPanel whole-control source port:
docs\layoutpanel-winui3-source-audit.mdmapsLayoutPanelandLayoutPanelLayoutContextagainst local WinUI 3 source. ModernWpf now documents the existing source-shaped measure/arrange and layout replacement behavior, deletes stale dead context-enumerator code, and adds focused coverage that old layout invalidation handlers are revoked whenLayoutchanges. -
2026-07-19 RadioMenuFlyoutItem current-source, Gallery-consumer, behavior, and accessibility refresh:
docs\radiomenuflyoutitem-winui3-source-audit.mdpins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, byte-current runtime/API/classic-theme/interaction/TestUI/inherited-peer blobs, and the equivalent two-setter perf2026 dictionary. ModernWpf retains weak group selection, guarded uncheck, load/unload map lifetime, submenu check mirroring, current mark/metrics/states, and the current Gallery groups/defaults. New product and Gallery tests prove MenuItem role/name, Toggle state, group replacement, and refusal to toggle the selected item off. Product/source tests pass 9/9 and focused Gallery coverage passes 3/3 on net8/net10. Existing MenuFlyout visual/recording artifacts are explicitly shared presenter/chrome evidence, not isolated radio-item pixel proof. -
2026-05-17 WrapPanel whole-control source port:
docs\wrappanel-winui3-source-audit.mdmapsWrapPanel, generated dependency-property metadata, and upstream API tests against local WinUI 3 source. ModernWpf now follows the source arrange row-cache rule, refreshing rows during arrange only when the arranged primary-axis size is smaller than the measured desired size, and documents WPF substitutions for dependency-property metadata, collapsed arrange cleanup, and WPF desired-size clamping. -
2026-05-18 stock ComboBox official WPF Fluent style port:
docs\combobox-wpf-fluent-source-audit.mdmaps WPF's stockComboBoxandComboBoxItemstyles againstPresentationFramework.Fluent. The previous WinUI-shapedComboBoxHelper, editable split-corner runtime helper,VisualStateEx,ContentPresenterEx, andFontIconFallbackstock-style guesses were deleted; ModernWpf now imports the official WPF template shape with documented substitutions formscorlib,Border.CornerRadius, retained DataGrid adapter style keys, and the classic WPF editableIsTabStop=Falsesetter that prevents backward and Ctrl+Tab focus traps. -
2026-05-17 ContentDialog whole-control source port:
docs\contentdialog-winui3-source-audit.mdmapsContentDialog, source event args/deferrals,ContentDialogMetadata, CommonStyles resources, and native integration tests against local WinUI 3 source. ModernWpf now treats the old WPF-written dialog surface as a source-backed WPF port with documented substitutions, including source template-part metadata, default-button visual-state suppression while focus is inside the command area on a non-default button, source-shaped Enter handling that invokes only an explicit enabledDefaultButton, and source-shaped Escape/backExecuteCloseActionbehavior that programmatically clicks the close button and honorsCloseButtonClickcancellation before falling back toHide(None). -
2026-07-18 AutoSuggestBox current-source, Gallery, behavior, accessibility, and pixel lock:
docs\autosuggestbox-winui3-source-audit.mdnow pins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, current runtime/event-args/peer/list/XamlOM/helper/theme/test blobs, the equivalent perf2026 setter dictionary, and the current two-example Gallery page/snippets. Every classic product source remains a byte-identical root move. ModernWpf retains source counter/CheckCurrent, user-text restoration, query/suggestion ordering, list selection, Invoke Group peer, popup shadow/corners, current Gallery filtering/search behavior, and documented WPF adapters. Fresh exact300x32resting crops pass Light and Dark at0.01under0.1with zero size tolerance. Current diagnostic proof shows ModernWpf's real-keyboardaeto nonblankAegeanpopup/output, while the installed reference still exposes no suggestions and is explicitly unavailable as a cross-app interaction gate. Product/source tests pass 12/12, Gallery/source-shape tests pass 4/4 on net8/net10, and net462 builds warning-free. -
2026-07-18 SplitView current-source, Gallery, behavior, accessibility, and pixel lock:
docs\splitview-winui3-source-audit.mdpins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, byte-current runtime/peer/XamlOM/theme/test blobs, the equivalent perf2026 setter dictionary, and the current converted one-example Gallery page/snippet. ModernWpf retains the source state table, measured Auto pane math, cancelable light dismiss, focus/close behavior, right-inline transitions, and current Gallery options. It now also ports the missing conditional modal Window peer onPaneRootand Button/InvokeClosepeer onLightDismissLayer. Fresh current captures remain exact400x300: Light3.23against the cached same-installation Light reference and Dark3.37fully live, both under4.0with zero size tolerance. Product/source tests pass 16/16, Gallery/source-shape tests pass 3/3 on net8/net10, and net462 builds with zero errors and no SplitView warnings. -
2026-07-18 PersonPicture current-source, Gallery, behavior, accessibility, and pixel lock:
docs\personpicture-winui3-source-audit.mdpins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, byte-current runtime/generated/initials/peer/template/theme/test/verification blobs, and the current converted one-example Gallery page/snippet/UI test. Every audited product file is a byte-identical source-root move and the Gallery page is unchanged after conversion, so no product rendering change is justified. ModernWpf retains image/contact/initials priority, reusable template settings, circular size and badge math, localized automation names, Text/PersonPicture peer shape, current resources, and documented WPF Contact/text-platform adapters. Fresh fully live Light/Dark installed-Gallery crops remain exact96x96at0.39/0.35under0.5with newly enforced zero size tolerance. Product/source tests pass 10/10, Gallery/source-shape tests pass 4/4 on net8/net10, and net462 builds warning-free. -
2026-07-18 ThemeShadow current-source, Gallery, redraw, and pixel lock:
docs\theme-shadow-winui3-parity.mdanddocs\theme-shadow-source-coverage.mdpin official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, current renderer/manager/elevation/partial/test/pixel-master blobs, and the unchanged converted one-example Gallery page/snippets. The root move is otherwise byte-stable; the only substantive current source change makes projected-shadow receiver traversal explicitly newest-first, which the per-host WPF substitution does not share. The audit exposed nondeterministic redraw through the private cached WPF visual:ThemeShadowChromenow propagates its resolved theme into the renderer and invalidates the cached background plus owner when theme or corner radius changes. Current-source PNG-master lookup accepts both the source-root and oldersrc-nested layouts. Fresh post-fix fully live Light/Dark installed-Gallery crops remain exact272x272at0.22/0.12under0.3with zero size tolerance. Product/source tests pass 33/33, the current-source PNG opt-in passes 1/1, Gallery/source-shape tests pass 3/3 on net8/net10, and the net462 Controls build succeeds with zero errors. -
2026-07-18 TitleBar current-source, Gallery, behavior, accessibility, interaction, and pixel lock:
docs\titlebar-winui3-gallery-parity.mdpins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, root move8463f45162149de0ec3ad7df752596893fe3e13e, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, the current runtime/generated/IDL/peer/settings/theme/resource/test blobs, and Gallery change9a14fa563584b19c06e3baccf10664a12f84fad5. Product semantics remain stable; the Gallery now has stretchable 580-DIPSearch...content, a drag-region/dynamic-content window, and the end-to-end window. ModernWpf retains its documented WPF shell adapter because the staticTitleBarattached-property facade reserves the WinUI class name, adds the source TitleBar automation role/class/title fallback, mirrors all three Gallery examples, and substitutes WPFDragMoveplus the live visual/input tree forInputNonClientPointerSource. Fresh fully live Light/Dark installed-Gallery crops remain exact470x48at0.74/0.82under1.0with zero size tolerance; fresh option recordings pass at local deltas6.819/7.897. Product/source tests pass 11/11, Gallery/source-shape tests pass 2/2 on net8/net10, and net462 Controls/Gallery builds succeed with zero errors. -
2026-07-18 InfoBadge current-source, Gallery, behavior, accessibility, interaction, and pixel lock:
docs\infobadge-winui3-source-audit.mdpins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, root move8463f45162149de0ec3ad7df752596893fe3e13e, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, every runtime/generated/IDL/template/settings/theme/test blob, and the unchanged four-example converted Gallery page/snippets. The audit fixed a subtle public template-settings mismatch: ModernWpf now retains the last generatedIconElementwhen returning to dot mode, exactly as source, while visual states hide it. It also pins the current accessibility boundary—no standalone InfoBadge peer, withInbox, 5 notificationsowned by the NavigationViewItem—and makes exact-size tolerance explicitly zero. Fresh fully live Light/Dark installed-Gallery crops remain exact16x16at4.44/3.73under5.0; opacity recordings pass at local deltas4.072/3.393. Product/source/raster tests pass 12/12, Gallery/source-shape tests pass 3/3 on net8/net10, the net462 Controls build succeeds with 18 existing unrelated warnings and zero errors, and Gallery builds warning-free. -
2026-05-17 RadioButtons whole-control source port:
docs\radiobuttons-winui3-source-audit.mdmapsRadioButtons,RadioButtonsElementFactory,RadioButtonsAutomationPeer,ColumnMajorUniformToLargestGridLayout, and test hooks against local WinUI 3 source. The old "ported existing WPF surface" classification is closed; ModernWpf now carries the source automation peer, sourceMaxColumnsvalidation, source template-owned layout binding via a WPFBindingProxy, sourceDataTemplateSelectorfactory handling, and documented WPF substitutions for focus/gamepad, access keys, child-handler revokers, and WPF automation metadata. -
2026-05-17 ColorPicker / ColorSpectrum whole-control source port:
docs\colorpicker-winui3-source-audit.mdmapsColorPicker,ColorSpectrum,ColorPickerSlider, and shared color conversion helpers against local WinUI 3 source. ModernWpf deleted the old guessedRootPanel/ gradient-only spectrum / one-way text-box implementation and now follows source-shapedRootGrid,ColorSpectrumGrid,TextEntryGrid, bitmap-backed spectrum maps,HsvColorstate ownership, source third-dimension slider channel mapping, RGB/HSV/alpha/hex text validation, More button text-entry state, and value-pattern automation. WPF substitutions remain documented forSpectrumBrush, async software bitmap creation, localized resource strings, WinRT UIA notifications, and raw TestUI pointer automation. -
2026-05-17 AnnotatedScrollBar whole-control source port:
docs\annotatedscrollbar-winui3-source-audit.mdmapsAnnotatedScrollBar, event args, labels, panning info, and scroll-controller primitives against local WinUI 3 source. The old guessedPART_Rail/PART_LabelsHost/ItemsControlimplementation and nearest-label detail fallback were deleted in favor of source-shaped vertical parts, label grid layout, hover tooltip/thumb ghost, cancelable scrolling,IScrollControllerrequest events, source small-change direction, and documented WPF substitutes forScrollPresenterand composition panning. -
2026-05-17 TeachingTip whole-control source port:
docs\teachingtip-winui3-source-audit.mdmapsTeachingTip, template settings, opened/closing/closed args, and automation peer behavior against local WinUI 3 source. ModernWpf replaced the old functional-subset classification with source-shapedOpenedevent timing,TeachingTipOpenedEventArgs,TeachingTipAutomationPeer, and WPFIWindowProviderstate while documenting WPF popup, placement, and WinRT automation-event substitutions. -
2026-05-17 PagerControl whole-control source port:
docs\pagercontrol-winui3-source-audit.mdmapsPagerControl,PagerControlTemplateSettings, andPagerControlAutomationPeeragainst local WinUI 3 source. The old guessedPART_RootPanel/PART_NumberPanelmanual page-button implementation was deleted in favor of the sourceRootGrid,NumberBoxDisplay,ComboBoxDisplay,ItemsRepeaternumber panel, indicator, display-mode visual states, finite/infinite collection sizing, ellipsis algorithms, source-owned pager button templates, source automation peer shape, and source resource strings. -
2026-05-17 BreadcrumbBar whole-control source port:
docs\breadcrumbbar-winui3-source-audit.mdmapsBreadcrumbBar,BreadcrumbBarItem,BreadcrumbElementFactory,BreadcrumbIterable, andBreadcrumbLayoutagainst WinUI 3 source. The old guessedPART_RootPanel/ manualStackPanelrebuild path was deleted in favor of the sourceItemsRepeater, leading ellipsis item, non-virtualizing breadcrumb layout, source item-type visual states, ellipsis dropdown repeater, source resource aliases, and source item-click index mapping. -
2026-05-17 RatingControl whole-control source port:
docs\ratingcontrol-winui3-source-audit.mdmapsRatingControlagainst local WinUI 3 source. The WPF-onlyRatingItemPathInfohelper, path templates, path theme resources, and path fallback tests were deleted because current WinUI 3 source only hasRatingItemFontInfoandRatingItemImageInfo. The template now follows sourceMinHeight,LayoutRoot.Background,CaptionStackPanel, caption, translate-transform, and foreground/background star-panel shape; the implementation now follows source resource caching, scaled glyph measurement, net stack-panel spacing, 12px caption spacing, first-item pointer offset, and pointer-capture tracking with documented WPF substitutions. -
2026-05-17 InfoBadge whole-control source port:
docs\infobadge-winui3-source-audit.mdmapsInfoBadgeandInfoBadgeTemplateSettingsagainst WinUI 3 source. The WPF template now uses source-shapedRootGridchrome throughGridEx, source InfoBadge theme resources, source display-state margins, source animated state transitions, and the WinUI 3InformationalDotInfoBadgeStylesolid-neutral background instead of the old default accent background. -
2026-07-17 InfoBadge pixel-parity refresh: current WinUI's
SizeChangedradius update exposed a WPF first-frame lifecycle gap when InfoBadge was hosted inside NavigationView. ModernWpf now pre-seeds the sameheight / 2radius before WPF template arrangement while retaining the source callback. Exact16x16installed-Gallery crops pass a strict5.0gate at Light4.44and Dark3.73, down from the square-badge40.57failure; rendered-host tests prove transparent corners and an accent-filled center. -
2026-05-17 InfoBar whole-control source port:
docs\infobar-winui3-source-audit.mdmapsInfoBar,InfoBarPanel, andInfoBarAutomationPeeragainst WinUI 3 source. The WPF port replaced the old manual content-row adjustment with the sourceBannerContent/NoBannerContentvisual states, added source close/icon automation strings, source visibility bookkeeping, source close-button content/resource aliases, and documents WPF substitutions for WinUI automation notifications, default-button style resource scope, and accessibility-view metadata. -
2026-05-17 PersonPicture whole-control source port:
docs\personpicture-winui3-source-audit.mdmapsPersonPicture,PersonPictureTemplateSettings,InitialsGenerator, and the automation peer against WinUI 3 source. The WPF-only placeholder icon/geometry template path was deleted in favor of WinUI's singleInitialsTextBlockplaceholder state model, the source chrome bindings andPreferSmallImageAPI were added, and the remainingContact/ text-platform differences are documented WPF substitutions. -
2026-07-17 PersonPicture pixel-parity refresh: the installed-Gallery comparison now crops the rendered avatar rather than its radio option. Exact
96x96Light and Dark crops score0.39/0.35and are protected by a strict0.5gate; no product change was required. -
2026-07-17 SelectorBar pixel-parity refresh:
docs\selectorbar-winui3-source-audit.mdmapsSelectorBar,SelectorBarItem, andSelectorBarItemAutomationPeeragainst WinUI 3 source. The source item metrics remain exact, while a render-only one-pixel WPF baseline adjustment is applied only toPART_TextVisualand mirrored by the source-backed Gallery template. Installed WinUI Gallery comparisons now have exact284x48crops at Light1.99and Dark2.58, protected by a strict3.0gate. -
2026-07-18 SplitButton / ToggleSplitButton current-source, Gallery, behavior, accessibility, and pixel lock:
docs\splitbutton-winui3-source-audit.mdnow pins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, every substantive product blob, and the reorganized 2026 Gallery pages/snippets. Product history contains only the source-root move and perf2026 project packaging. The WPF port follows source flyout revokers/show options, key/command/toggle ordering, state routing, split-border chrome, and mutually exclusive Invoke/Toggle accessibility. The Gallery RichTextBox adapter now removes list formatting when unchecked like the current RichEditBox sample. Fresh exact SplitButton71x32crops pass Light0.46/ Dark0.37under1.0; exact ToggleSplitButton78x33crops pass Light1.62/ Dark0.98under2.0. Both now enforce zero size tolerance and retain separate secondary-flyout proof. -
2026-07-19 DropDownButton current-source refresh:
docs\dropdownbutton-winui3-source-audit.mdpins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, current Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, root-move-only bounded history, setter-equivalent perf2026 states, replacement-flyout accessibility behavior, and the unchanged Email/icon Email examples. Fresh exact78x32Light/Dark crops pass at3.68/2.69under4.0, and both OpenRepeat recordings pass. -
2026-07-18 NumberBox current-source, Gallery, behavior, accessibility, and pixel lock:
docs\numberbox-winui3-source-audit.mdnow pins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, current generated/runtime/parser/peer/template/theme/test blobs, the perf2026 setter variant, and all three current Gallery examples/snippets. Product history is otherwise byte-current after the source-root move; the only runtime edit moves the unchanged whitespace table to a function-local constant to eliminate a native DLL initializer, already equivalent to WPFString.Trim. The existing WPF port retains source template lifecycle, parser/formatter/rounding, key/wheel/step/wrap behavior, placement/enabled states, UIA forwarding, RangeValue Spinner peer, resources, and documented popup/TextBox adapters. Fresh exact resting132x59crops pass Light1.84/ Dark1.74under2.5; exact value-changed152x79crops pass1.69/1.02under a new2.0interaction gate. Both size tolerances are zero. Product/source tests pass 18/18, focused Gallery tests pass 2/2 on net8 and net10, and the net462 build is warning-free. -
2026-07-19 HyperlinkButton current-source, Gallery, behavior, accessibility, and pixel refresh:
docs\hyperlinkbutton-winui3-source-audit.mdpins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, and current runtime/API/XamlOM/peer/classic/perf2026/native-test plus Gallery page/snippet blobs. Every classic source is byte-current after the root move; perf2026 only converts nine state assignments to equivalent setters already represented locally. ModernWpf retains NavigateUri/no TargetName, source click order, Hyperlink/Invoke accessibility with disabled rejection, current resources/states, two Gallery examples, and exact157x32geometry. Light/Dark pass at1.48/1.47under1.6; product/source tests pass 5/5 and Gallery tests pass 3/3 on net8/net10. -
2026-07-19 current WinUI port inventory lock:
docs\winui3-control-source-coverage.mdremains one-to-one with all 33 shippedModernWpf.Controls\Themes\Generic.xamlresources, and every*winui3-source-audit.mddocument now pins product authorityde3e767333c2f0717a6a70cb22bd192ced5ad885.TemplateParityTestsnow rejects a missing/extra/duplicate resource row, missing evidence, a shrunken audit inventory, or any audit that loses the current product pin. -
2026-07-18 ProgressRing current whole-control refresh:
docs\progressring-winui3-source-audit.mdpins the current control, generated properties, determinate/indeterminate Lottie sources, template/theme, peer, tests, and current Gallery page/snippets. The WPF port uses sourceLayoutRoot/LottiePlayer, current common states, inactive opacity, update ordering, range coercion, theme resources, automation, and generated 32x32 animation geometry through its documented native WPF arc/storyboard substitute. Deterministic exact60x60proof passes Light0.64/ Dark0.63under a1.0gate and newly explicit zero size tolerance. -
2026-07-19 layout-chrome current-source refresh:
docs\layout-chrome-winui3-source-audit.mdpins current Border/Grid/StackPanel/ContentPresenter/framework/XamlOM/integration inputs atde3e767333c2f0717a6a70cb22bd192ced5ad885. Layout sources remain byte-current; newer framework changes are internalOptimizeApplyStyles, resource, event, type-bit, tracing, and ApplyTemplate work with no chrome/layout semantic change. The 96-DPI renderer now detaches its windowless GridEx after sampling, eliminating same-process render-channel contamination; the complete chrome/layout slice passes 56/56. -
2026-05-17 layout text-property inheritance: WinUI XamlOM marks
Control.CharacterSpacing,Control.IsTextScaleFactorEnabled,ContentPresenter.CharacterSpacing, andContentPresenter.IsTextScaleFactorEnabledas inherited text-formatting properties that affect measure. ModernWpf now shares theControlHelperdependency-property identity withContentControlExandContentPresenterEx, adds WPF inheritance metadata, and tests inherited presenter values plus local-value precedence. -
2026-05-17 CommandBarFlyout whole-control source port: the stale in-progress marker is closed.
docs\commandbarflyout-winui3-source-audit.mdmapsCommandBarFlyoutandCommandBarFlyoutCommandBaragainst WinUI 3 source; the WPF port now follows source close-animation cancellation with a secondHide, tracksKeyboardAcceleratorTextOverridealong withIconandLabelfor secondary command sizing, and documents compositor, backdrop, popupActualPlacement, and WinRT automation as platform substitutions. -
2026-05-17 CommandBar whole-control source port:
docs\commandbar-winui3-source-audit.mdmaps normalCommandBar,CommandBarTemplateSettings,CommandBarOverflowPresenter, and the CommonStyles template against local WinUI 3 source. The oldCommandBarToolBar/CommandBarPanelWPFToolBarhost was deleted; ModernWpf now runs available-command states, overflow-button visibility, and measured primary-command overflow fromCommandBaritself. -
2026-05-17 AppBarButton / AppBarToggleButton whole-control source port: the stale in-progress marker is closed.
docs\appbarbutton-winui3-source-audit.mdmaps the control pair against WinUI 3 source; ModernWpf now includes the sourceCloseSubMenusOnPointerEnteredbehavior with a WPF flyout-submenu substitute, and the remaining gamepad/remote, CascadingMenuHelper, CommandBar/AppBar platform, and WinRT automation differences are documented platform substitutions rather than guessed implementation. -
2026-05-17 FlyoutBase whole-control source port: the stale guessed-debt marker is closed.
docs\flyoutbase-winui3-source-audit.mdmapsFlyoutBase,Flyout, andMenuFlyoutagainst WinUI 3 source; show-options state is now applied before the same-target open/no-op path likeShowAtWithOptionsImpl,Transientupdates the publicShowMode, one-way placement converters use WPF no-op convert-back values instead of throwing, and remaining gaps are documented as WPF popup/XamlRoot substitutions. -
2026-07-18 ToggleSwitch current-source, Gallery, behavior, accessibility, and pixel lock:
docs\toggleswitch-winui3-source-audit.mdnow pins official product commitde3e767333c2f0717a6a70cb22bd192ced5ad885, Gallery commit29f62479d5c046a0b854a5868e5a7cd484572d87, current runtime/peer/key/XamlOM/theme/test blobs, and the current two-example Gallery page/snippets. Classic product sources remain byte-current; the new perf2026 dictionary is an equivalent setter-based variant already represented by ModernWpf'sVisualStateEx.Setters. The port retains source drag/manipulation/key/state/automation behavior and its documented centered-content measurement adapter. Fresh exact resting72x40crops pass Light0.92/ Dark1.06under1.5, with exact On-state92x60interaction crops at0.53/0.48; primary size tolerance is now zero. Product/source tests pass 55/55, focused Gallery tests pass 2/2 on net8 and net10, and the focused net462 build is warning-free. -
2026-05-17 FlyoutShowOptions target-point path: WinUI XamlOM exposes
FlyoutShowOptionswith defaultShowMode=AutoandPlacement=Auto;FlyoutBase::ShowAtWithOptionsImplreadsPosition,ExclusionRect,ShowMode, andPlacement, sets a transient target position, applies a non-Autoplacement override, and resets target-position/override state on close. ModernWpf now adds the WPF API shape,FlyoutPlacementMode.Auto, source-shaped show-options cloning for staged opens, target-point placement through a WPF zero-sizePlacementRectangle, and placement overrides forFlyoutandMenuFlyout. -
2026-05-17 FlyoutShowOptions null target: WinUI accepts a null placement target when
FlyoutShowOptions.Positionis set and otherwise rejects empty show options; ModernWpf now follows that shape by using the WPF main-window root as the placement target for positionedFlyoutandMenuFlyoutopens. -
2026-05-17 FlyoutShowOptions exclusion rect: WinUI shifts target-point flyouts away from
ExclusionRectwhen the calculated presenter rect would overlap it; ModernWpf now keepsExclusionRectthrough show-options cloning, translates it into target-position-relative WPF placement space, and shifts custom placements along the effective major placement. -
2026-05-17 Flyout root-bounds constraint surface: WinUI XamlOM exposes
FlyoutBase.ShouldConstrainToRootBoundsandIsConstrainedToRootBounds, and WinUICommandBarFlyoutsetsShouldConstrainToRootBounds=falsein its constructor. ModernWpf now exposes the same WPF dependency-property surface and applies the CommandBarFlyout default while documenting the WPF popup substitution. -
2026-05-17 ToggleSwitch template root: WinUI 3 CommonStyles uses the visual-state-hosting
Gridas theToggleSwitchtemplate root; ModernWpf removed the old WPF-only outer chromeBorderwrapper and now keeps the source-shaped root grid while preserving documented WPF substitutions inside the switch parts. -
2026-05-17 ToggleSwitch root Grid chrome: WinUI's root
GridbindsBackground,BorderBrush,BorderThickness, andCornerRadius; ModernWpf now uses an inertBorderExchrome layer as the WPF substitute so those bindings are no longer dropped while preserving the working rootGridlayout. -
2026-05-17 ToggleSwitch SwitchAreaGrid animation target: WinUI animates
SwitchAreaGridas aGrid/Panel, but ModernWpf represents that rounded switch-area surface with a WPFBorder; the CommonStates color animations now targetBorder.Backgroundinstead of the old guessedPanel.Backgroundpath, with a focused test asserting the dependency-property path. -
2026-05-17 ToggleSwitch manipulation mode: WinUI CommonStyles sets
ManipulationMode="System,TranslateX"and native tests cover horizontal pan toggling while vertical pan does not toggle; ModernWpf now enables WPF manipulation onToggleSwitch, requestsTranslateX, routes horizontal manipulation through the same source-shaped move/complete path as thumb drag, and leaves vertical-only deltas unhandled/non-toggle. -
2026-05-17 Flyout ShowMode state: WinUI
FlyoutBase::UpdateStateToShowModenormalizesAutotoStandard, keeps standard flyouts focus-taking, makes transient flyouts non-focus-taking, and hidesTransientWithDismissOnPointerMoveAwayflyouts when the pointer moves more than 80px from presenter bounds; ModernWpf now ports those state rules with a WPF rootMouseMovesubstitute. -
2026-05-17 AppBar label-on-right width guard: WinUI
AppBarButton::UpdateInternalStyles/AppBarToggleButton::UpdateInternalStylesapply the auto-width adjustment only for right labels, non-overflow style, and no local/modifierWidth; ModernWpf removed the unconditionalLabelOnRightXAMLWidth=NaNsetters and now uses WPFWidthPropertycoercion so local widths remain authoritative. -
2026-05-17 Flyout placement fallback order: WinUI
FlyoutBase::CalculatePlacementPrivatetries the requested major placement, then the opposite major placement, then the remaining axis while preserving the requested justification; ModernWpf now returns the same source-shaped custom popup placement order instead of the old single opposite-placement guess, including right-edge-aligned placements. -
2026-05-17 ToggleSwitch transient state reset: WinUI
OnIsEnabledChangedandOnVisibilityChangedclear dragging and pointer-over state, then refresh visual states; ModernWpf now keeps those reset paths source-shaped and covers disabled/collapsed transitions with focused tests. -
2026-05-17 Flyout placement-target unload close: WinUI
FlyoutBaseattaches anUnloadedhandler to the placement target and hides the flyout when the target leaves the tree; ModernWpf now tracks the target in bothFlyoutandMenuFlyoutpaths and tests that unloading the target closes the flyout and clearsTarget. -
2026-05-17 CommandBar visible command states: WinUI
CommandBar::ChangeVisualStatechoosesBothCommands,PrimaryCommandsOnly, orSecondaryCommandsOnlyfrom visible dynamic command elements, andAppBarButton/AppBarToggleButton/AppBarSeparatornotify the parent fromOnVisibilityChanged; ModernWpf now uses WPFVisibilitychanges, owner tracking, and visible command collection checks instead of toolbar child/overflow counts. -
2026-05-17 AppBar command execution close path: WinUI
AppBarButton::OnClickcloses the parentCommandBarunless the button has an associated flyout, whileAppBarToggleButton::OnClickalways routes throughCommandBar::OnCommandExecutionStatic; ModernWpf now mirrors that behavior with focused WPF tests for command buttons, flyout buttons, and toggle buttons. -
2026-05-17 FlyoutBase open-staging source shape: WinUI
FlyoutBaseenforces a single open flyout by staging the latest show request and hiding the current open flyout; ModernWpf now applies that WPF substitute to bothFlyoutandMenuFlyout. -
2026-05-17 ToggleSwitch whole-control status: ToggleSwitch is now tracked as a source-backed WPF port rather than guessed implementation debt; future work should be limited to concrete WinUI source drift or documented WPF substitution gaps.
-
2026-05-17 MenuFlyout cancelable Closing: WinUI
MenuFlyout::OnClosingdelegates toFlyoutBase::OnClosingand keeps the menu open whenCancelis true; ModernWpf now routes the same cancellation path through its WPFContextMenupresenter and completesClosedexactly once from theIsOpen=falsetransition. -
2026-05-17 FlyoutBase Target property: WinUI XamlOM defines
FlyoutBase.Targetas a read-only dependency property with an internal setter; ModernWpf now exposes the same WPF read-only dependency property and tracks it for bothFlyoutandMenuFlyoutwhile open. -
2026-07-17 ToggleSwitch pointer-capture/style correction: WinUI clears
PointerOverfromOnPointerCaptureLostafter vertical-pan drag completion, which ModernWpf keeps through the WPF thumb capture-lost path. Although CommonStyles does not spell outVerticalContentAlignment, live evidence shows WinUI's Control metadata centers it while WPF defaults it to Top, so the WPF port now declares the required platform-default substitution explicitly. -
2026-05-17 ToggleSwitch source-audit correction:
docs\toggleswitch-winui3-source-audit.mdmaps the current WPF implementation against WinUI 3ToggleSwitch_Partial, XamlOM, CommonStyles, and native tests; the keyboard path follows WinUI'sOriginalKeyshape by normalizing WPF system/IME/dead-char keys before source-style key processing. -
2026-05-17 FlyoutBase cancelable Closing: WinUI
HideImplcallsOnClosingand aborts hide whenFlyoutBaseClosingEventArgs.Cancelis true; ModernWpf now exposes the source-shapedClosingevent andCancelproperty, then restores WPFPopup.IsOpenon canceled closes while suppressing the synthetic reopen notification. -
2026-05-17 NavigationView whole-control source audit:
docs\navigationview-winui3-source-audit.mdmaps the current WPF port against local WinUI 3 source. The active implementation already carries source-shaped NavigationView, item, presenter, template-settings, top-navigation data-provider, item factory, visual-state, and selection-provider architecture; this slice fixes the remaining public automation-peer surface mismatch and reclassifies the stale WinUI 2-era matrix row. -
2026-05-17 NavigationView back-button source cleanup:
ModernWpf\Styles\NavigationBackButton.xamlnow follows WinUI 3NavigationBackButton.xamlfor pointer-over, pressed, and disabled back-button visual states. The old WPFControlTemplate.Triggersmatrix was deleted, and chrome plus static animated-icon state fallback now lives inVisualStateEx.Setterswith focused NavigationView coverage. -
2026-05-18 Expander source cleanup:
ModernWpf\Styles\Expander.xamlnow follows official WPF Fluent with WPFControlTemplate.Triggers, local chevron templates, plain WPFContentPresenterslots, official collapse animations, and a localizedAnimationFactorToValueConverter. Focused tests assert the official trigger/template shape and the absence of the deleted WinUI-shaped presenter/state helpers. -
2026-05-17 ToggleSwitch owner focus states: WinUI
ChangeVisualStatebranches from the ToggleSwitch owner'sFocusState, not focus inside template children; ModernWpf now uses owner keyboard focus forFocused/PointerFocusedrouting and pointer mouse-down focuses the owner when a custom template child previously held focus. -
2026-05-17 ToggleSwitch canceled drag completion:
ToggleSwitch_Partial.cppreturns immediately whenDragCompletedHandlerreceivesCanceled=true; ModernWpf now leaves the dragging state/translations untouched on that path and tests the resultingPressed/Draggingstates. -
2026-05-17 ToggleSwitch thumb tap bridge: WinUI registers
TappedonSwitchThumb, and its tap handler runs after drag cleanup; ModernWpf now uses a handled bubblingMouseLeftButtonUphook instead of the old preview mouse-up hook so the WPFThumbcompletesDragCompletedbefore the tap substitute toggles. -
2026-05-17 ToggleSwitch size updates: WinUI recalculates translation bounds only from the knob and knob-bounds
SizeChangedhandler; ModernWpf deleted the old template-apply/root render-size fallback and now tests knob-bounds resizing through the same part-size path. -
2026-05-17 ToggleSwitch source test parity: added coverage for the WinUI native test cases where horizontal drag toggles both on and off, explicit
AutomationProperties.Namewins over computed names, and style-provided On/Off content is included in automation names. -
2026-05-17 ToggleSwitch automation string extraction: removed the guessed arbitrary
ToString()fallback and matched WinUI'sFrameworkElement::GetStringFromObjectshape for known property values and unknown non-text objects. -
2026-05-17 ToggleSwitch automation peer source shape: replaced the hard-coded localized control type with a ToggleSwitch resource matching WinUI's
UIA_AP_TOGGLESWITCHlookup, and routedIToggleProvider.TogglethroughAutomationToggleSwitchOnTogglebefore the owner toggles state. -
2026-05-17 ToggleSwitch template source target: confirmed the packaged WinUI 3 style merge includes
src\controls\dev\CommonStyles\ToggleSwitch_themeresources.xamlafter the frameworkdxamlgeneric style, so the ModernWpf 40px track, 12px knob, knob growth animations, and pressed knob margins are source-backed. Removed the extra WPF-onlyOffstate transform storyboard and added template-geometry tests to protect the CommonStyles source shape. -
2026-05-17 ToggleSwitch native lifecycle/tap parity: added WPF coverage for WinUI native
CanInstantiate,CanEnterAndLeaveLiveTree, andCanToggleUsingTapInput, plus a WPF tap-bridge guard test that prevents a post-drag mouse-up from double-toggling after horizontal drag already changed state. -
2026-05-17 ToggleSwitch key process source shape: replaced the remaining inline guessed key-up toggle path with a private WPF port of WinUI's
ToggleSwitchKeyProcesshelper, keeping the source flow-direction branches behindHandlesKey; directional-key coverage now verifies both LTR and RTL stay non-toggle like WinUI's native test. -
2026-05-17 ToggleSwitch automation listener source shape: WinUI checks for a property-changed automation listener and then calls
GetOrCreateAutomationPeerbefore raisingToggleState; ModernWpf now follows that listener-first/get-or-create path, with focused coverage proving the firstIsOnchange creates the peer when a WPF UIA property-change listener exists. -
2026-05-17 ToggleSwitch render-transform discovery: WinUI gets the curtain and knob translate transforms from the template parts'
RenderTransformvalues rather than a namedKnobTranslateTransformpart; ModernWpf now follows that source shape and clones frozen WPF template transforms before mutating them. -
2026-05-17 ToggleSwitch knob background sizing: WinUI CommonStyles sets
SwitchKnobOnBackgroundSizing="OuterBorderEdge"; ModernWpf now usesBorderExfor that template part so the WPF template preserves the WinUI knob chrome behavior instead of dropping it on a plainBorder. -
2026-05-17 ToggleSwitch legacy theme brushes: WinUI 3 CommonStyles still publishes the older
ToggleSwitchCurtain*,ToggleSwitchThumb*,ToggleSwitchTrack*, foreground, header, and outer-border theme brushes even though the active CommonStyles template now mostly uses newer aliases. ModernWpf now restores those source resource keys for Light, Dark, and HighContrast so existing resource consumers have the WinUI-compatible surface. -
2026-05-17 AppBar automation/flyout source shape: WinUI creates explicit
AppBarButtonAutomationPeer/AppBarToggleButtonAutomationPeer, derives automation name fromAutomationProperties.NameorLabelwithoutContentfallback, reports source localized control-type strings and trimmed keyboard accelerator text, exposes Toggle automation throughAutomationToggleButtonOnToggle, and opens associated AppBarButton flyouts from click/expand paths; ModernWpf now ports these WPF equivalents. -
2026-05-17 AppBar automation keyboard focus: WinUI
AppBarButtonAutomationPeer::IsKeyboardFocusableCoreandAppBarToggleButtonAutomationPeer::IsKeyboardFocusableCoreuseAppBarButtonHelpers::IsKeyboardFocusablewhen hosted in aCommandBar, so non-tab-stop primary and secondary commands still report UIA keyboard focusable. ModernWpf now uses the same parent-CommandBar branch and ignoresIsTabStopfor the automation property while preserving WPF visible/enabled/focusable checks. -
2026-05-17 AppBar button pointer focus: WinUI native
AllowFocusOnInteractiontests verifyAppBarButtonandAppBarToggleButtonreject pointer focus by default while still accepting keyboard focus; ModernWpf now cancels WPF mouse-origin focus for both controls and tests the WPF substitute. -
2026-05-17 AppBar empty-label presence: WinUI
GetHasLabelAtPositiontreats any non-nullLabelas present, including the default empty string; ModernWpf now follows that rule for both AppBar button types when CommandBar decides whether bottom-label primary commands require the overflow button. -
2026-08-08 Preview 3 TimePicker and TwoPaneView adoption:
docs\timepicker-winui3-source-audit.mdanddocs\twopaneview-winui3-source-audit.mdpin current WinUIwinui3/maincommit6a556bb28fc227acd2ec8fe67ee64853f559084b, current Gallery commit3669519356c67f1376152c33ed8ea45003a91f3a, immutable product/Gallery blobs, current public APIs, behavior, templates, automation, and the finite cutoff disposition. TimePicker uses a documented WPF Popup/ListBox/culture adapter; TwoPaneView uses the source single-region threshold path and deliberately does not invent a WPF hinge API. The same cutoff ports the applicable visible NumberBox placeholder into the UIA Control view. -
2026-08-08 Preview 4 TitleBar and window-material adoption:
docs\titlebar-winui3-gallery-parity.mdpins WinUIwinui3/maincommite1aa8f64df98d6229f6cd4074d59b654616254daand Gallery commit3669519356c67f1376152c33ed8ea45003a91f3a;docs\window-backdrop-wpf-source-audit.mdpins official WPF commit7f005faa89e79b0b1fa1cb2c21283bab7916c092. The finite cutoff adds only four non-applicable TableView sample paths. ModernWpf ports the content-oriented TitleBar separately from its existing shell chrome and supplies a WPF-native DWM backdrop adapter with explicit OS, composition, High Contrast, layered-window, chrome, and native-failure fallbacks.
| Area | WinUI 3 source files | ModernWpf files | Status | Evidence |
|---|---|---|---|---|
| ItemContainer | current controls\dev\ItemContainer\*, generated ItemContainer properties, interaction and accessibility tests, TestUI, strings, and WinUIGallery\Samples\ItemContainer\* |
ModernWpf.Controls\ItemContainer\*, ModernWpf\ThemeResources\*.xaml, ModernWpf\ModernWpfControlsResources.xaml, ModernWpf.Gallery\Pages\ItemsViewFoundationsSampleFactory.cs, focused WinUI/Theme/Gallery tests, and docs\itemcontainer-winui3-source-audit.md |
Source-backed WPF port | Pinned to product 23a73be03d194ea0ece97da71de98b6b53021b70 and Gallery b78c440193aab788215888561e45adf72da848cb. Public Child/IsSelected shape, selection visuals, pointer and keyboard policy, automation selection-item behavior, localized automation, metrics, and semantic brushes follow current source. WPF adds CornerRadius as a documented dependency-property adaptation and keeps ItemsView-owned policy internal. |
| LinedFlowLayout, item transitions, and ItemsView scrolling prerequisite | current controls\dev\Repeater\LinedFlowLayout*, ItemsRepeater\ItemCollectionTransition*, generated repeater/layout properties, runtime and interaction tests, and WinUIGallery\Samples\ItemsView\* |
ModernWpf.Controls\Repeater\Layouts\LinedFlowLayout\*, ModernWpf.Controls\Repeater\ItemsRepeater\Transitions\*, ItemsRepeater/Layout integration, internal ModernWpf.Controls\ItemsView\ItemsViewScrollHost.cs, ModernWpf.Gallery\Pages\ItemsViewFoundationsSampleFactory.cs, focused tests, and the LinedFlowLayout/scrolling audit documents |
Source-backed WPF port and documented platform adapter | Pinned to product 23a73be03d194ea0ece97da71de98b6b53021b70 and Gallery b78c440193aab788215888561e45adf72da848cb. Public LinedFlowLayout measurement, metadata planning, line alignment, locking, width constraints, ItemsRepeater transition-provider hooks, and transition lifecycle follow current source. WPF uses Dispatcher-backed completion and an internal IScrollController-to-ScrollViewer bridge; the public ItemsView surface remains reserved for Preview 7. |
| TitleBar | controls\dev\TitleBar\*, generated TitleBar properties, interaction tests, TestUI, strings, and WinUIGallery\Samples\TitleBar\* |
ModernWpf.Controls\TitleBar\*, ModernWpf\ThemeResources\*.xaml, ModernWpf.Gallery\Pages\WindowingSampleFactory.cs, test\ModernWpf.WinUI.Tests\TitleBar\*, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, docs\titlebar-winui3-gallery-parity.md |
Source-backed WPF port | Pinned to product e1aa8f64df98d6229f6cd4074d59b654616254da and Gallery 3669519356c67f1376152c33ed8ea45003a91f3a. Public content slots, icon/template settings, events, visibility/enabled state, nullable drag-region override, automatic/manual recompute APIs, localized automation, 32/48-DIP template states, 76 resource keys, and three Gallery examples follow current source. WPF substitutes live visual-tree hit classification and WindowChrome/DragMove for WinUI's InputNonClientPointerSource, XamlRoot, and rectangular drag-region API. |
| Window materials | Official WPF WindowBackdropManager, ThemeManager, Window, backdrop enum, DWM interop, and Fluent Window style at 7f005faa89e79b0b1fa1cb2c21283bab7916c092 |
ModernWpf\Window\WindowBackdrop.cs, WindowBackdropKind.cs, Gallery SystemBackdrop page, focused behavior/source tests, and docs\window-backdrop-wpf-source-audit.md |
Official WPF-backed platform adapter | Public attached Kind/FallbackBrush and read-only EffectiveKind expose Mica/Desktop Acrylic without changing WPF Window. Native material requires Windows 11 22H2+, composition, non-layered content, and compatible glass chrome; all other paths use a theme-aware solid fallback. The adapter restores owned background/composition/frame state, reacts to system changes, and unsubscribes process-wide listeners when the window closes. |
| TimePicker | current XamlOM, TimePicker_Partial.*, TimePickerAutomationPeer_Partial.*, phone flyout/presenter runtime, classic/perf2026 theme resources, native integration tests, and WinUIGallery\Samples\TimePicker\* |
ModernWpf.Controls\TimePicker\*, ModernWpf\ThemeResources\*.xaml, ModernWpf.Gallery\Pages\DateTimeSampleFactory.cs, test\ModernWpf.WinUI.Tests\TimePicker\*, test\ModernWpf.Gallery.Tests\TimePickerSourceAuditTests.cs, docs\timepicker-winui3-source-audit.md |
Source-backed WPF port | Pinned to product 6a556bb28fc227acd2ec8fe67ee64853f559084b and Gallery 3669519356c67f1376152c33ed8ea45003a91f3a. Public DP/event/peer shape, null sentinel, time coercion, system clock, selector order, three Gallery examples, and theme tokens follow current source. WPF substitutes Popup/ListBox/system culture for WinUI's asynchronous flyout/LoopingSelector/calendar stack and records the window-wide overlay limitation. |
| TwoPaneView | controls\dev\TwoPaneView\TwoPaneView.idl, .cpp, .h, .xaml, generated properties, DisplayRegionHelper, API/interaction tests, and TestUI |
ModernWpf.Controls\TwoPaneView\*, ModernWpf.Gallery\Pages\LayoutSampleFactory.cs, test\ModernWpf.WinUI.Tests\TwoPaneView\*, test\ModernWpf.Gallery.Tests\TwoPaneViewSourceAuditTests.cs, docs\twopaneview-winui3-source-audit.md |
Source-backed WPF port | Pinned to product 6a556bb28fc227acd2ec8fe67ee64853f559084b; pinned Gallery has no TwoPaneView page. Public enums/DPs/event, strict width-first thresholds, pane ordering/priority, row/column lengths, and six visual states follow source. WPF uses the official single-region path because it has no portable XamlRoot/ApplicationView spanning contract; no fake hinge API or gap is exposed. |
| MenuFlyout | controls\dev\CommonStyles\MenuFlyout_themeresources.xaml, controls\dev\CommonStyles\MenuFlyout_themeresources_perf2026.xaml, dxaml\xcp\dxaml\lib\MenuFlyout_Partial.cpp, dxaml\xcp\dxaml\lib\MenuFlyoutPresenter_Partial.cpp, dxaml\xcp\dxaml\lib\MenuFlyoutItem_Partial.cpp, dxaml\xcp\dxaml\lib\MenuFlyoutSubItem_Partial.cpp, toggle/split item runtime and automation peers, WinUIGallery\Samples\MenuFlyout\* |
ModernWpf.Controls\MenuFlyout\*, ModernWpf\Styles\MenuItem.xaml, ModernWpf.Controls\RadioMenuItem\*, ModernWpf.Gallery\Pages\MenusToolbarsSampleFactory.cs, test\ModernWpf.WinUI.Tests\MenuFlyout\*, test\ModernWpf.WinUI.Tests\RadioMenuFlyoutItem\*, test\ModernWpf.Gallery.Tests\MenuFlyoutSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, tools\visual-checks\Record-GalleryControlInteractions.ps1, docs\menuflyout-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. Classic blob 6f9f3fd322583d2d537dc30c439e62accf1efbd4 remains byte-current; perf2026 blob f5cfea5b8bd4b3bccb8a24c8f4fbc165c1cc69b9 changes seven narrow-padding assignments to equivalent setters and catches up the classic SplitMenuFlyout surface before the repository-root move. ModernWpf retains current typography, presenter/item metrics, standard/narrow states, radio placeholder, theme/High Contrast aliases, seven Gallery examples, outputs/fonts/checks, and Button/MenuItem/Text roles with Invoke/Toggle/ExpandCollapse. The scoped WPF menu metric and one-pixel presenter adapter yield exact 68x64 / 96x102 crops: fresh Light artifacts/visual-checks/20260719-004427-629-26672/report.md passes at 0.57 / 6.70; Dark artifacts/visual-checks/20260719-004459-735-37204/report.md at 0.55 / 4.01. OpenRepeat recordings artifacts/gallery-recordings/20260719-004531-064/report.md and artifacts/gallery-recordings/20260719-004623-068/report.md prove By rating invocation, dismissal, and reopen. Product tests pass 21/21, Gallery tests 3/3 on net8/net10, and builds pass net462/net8/net10. WPF substitutions remain documented for ContextMenu popup HWND, inherited typography, template/style selection, acrylic/composition, AccessibilityView, WinRT-specific event plumbing, and perf-setter representation. |
| Stock foundation/navigation styles | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ContentControl.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\HeaderedContentControl.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ItemsControl.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\UserControl.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Page.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Frame.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\NavigationWindow.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\TextBlock.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Thumb.xaml |
ModernWpf\Styles\ContentControl.xaml, ModernWpf\Styles\HeaderedContentControl.xaml, ModernWpf\Styles\ItemsControl.xaml, ModernWpf\Styles\UserControl.xaml, ModernWpf\Styles\Page.xaml, ModernWpf\Styles\Frame.xaml, ModernWpf\Styles\NavigationWindow.xaml, ModernWpf\Styles\TextStyles.xaml, ModernWpf\Styles\Thumb.xaml, ModernWpf\StockControlsResources.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\FoundationNavigationVisualStateTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, docs\foundation-navigation-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control family | docs\foundation-navigation-wpf-fluent-source-audit.md maps the stock foundation/navigation styles against official WPF Fluent. ModernWpf now imports the missing content/control/navigation shell dictionaries, aligns core text styles to official TextBlock shape while retaining legacy text aliases, and exposes official shell theme aliases. WPF substitutions remain documented for System.Runtime to mscorlib, TextBlock.xaml to the existing TextStyles.xaml merge path, the existing generic Thumb corner-radius bridge, and ModernWpf's custom Window chrome being covered separately by docs\window-wpf-fluent-source-audit.md. |
| ToolTip | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ToolTip.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\ToolTip.xaml, ModernWpf\StockControlsResources.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\ToolTipVisualStateTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\tooltip-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\tooltip-wpf-fluent-source-audit.md maps the stock WPF ToolTip style against official WPF Fluent. The previous WinUI-like ThemeShadowChrome / ContentPresenterEx chrome surface was deleted for this stock control; the template now uses a WPF Border, plain WPF ContentPresenter, official system status font resources, WPF DropShadowEffect, and the official ToolTipForeground / ToolTipBackground aliases. StockControlsResources now merges the style so XamlControlsResources applies it. ModernWpf retains old resource aliases such as ToolTipContentThemeFontSize as unused public aliases. |
| Label | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Label.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\Label.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\LabelVisualStateTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\label-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\label-wpf-fluent-source-audit.md maps the stock WPF Label style against official WPF Fluent. The previous ModernWpf Border / ContentPresenterEx template, explicit alignment/font/background setters, and disabled trigger were deleted for this stock control; the style now uses official WPF Fluent's setter-only surface and the official LabelForeground alias. |
| GroupBox | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\GroupBox.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\GroupBox.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\GroupBoxVisualStateTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\groupbox-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\groupbox-wpf-fluent-source-audit.md maps the stock WPF GroupBox style against official WPF Fluent. The previous ModernWpf ContentPresenterEx header/content slots, old header spacing, and implicit foreground forwarding were deleted for this stock control; the template now uses WPF Border chrome, two plain WPF ContentPresenter slots, official GroupBox metrics, and the official GroupBoxBackground / GroupBoxBorderBrush / GroupBoxHeaderForeground aliases. |
| GroupItem | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\GroupItem.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\CollectionViewGroup.xaml |
ModernWpf\Styles\GroupItem.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\GroupItemVisualStateTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, docs\groupitem-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\groupitem-wpf-fluent-source-audit.md maps the stock WPF GroupItem style and grouped-header data template against official WPF Fluent. The previous ModernWpf ListViewHeaderItem wrapper, DefaultGroupItemStyle key, and OverridesDefaultStyle guess were deleted for this stock control; the template now uses official WPF ContentPresenter / ItemsPresenter shape with the official 5,0,0,0 items margin, plus the official CollectionViewGroup.Name header template. |
| Stock ListBox / ListView / GridView styles | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ListBox.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ListBoxItem.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\GridView.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ListView.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ListViewItem.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\ListBox.xaml, ModernWpf\Styles\ListBoxItem.xaml, ModernWpf\Styles\GridView.xaml, ModernWpf\Styles\ListView.xaml, ModernWpf\Styles\ListViewItem.xaml, ModernWpf\StockControlsResources.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\ListBoxListViewVisualStateTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, docs\listbox-listview-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock controls | docs\listbox-listview-wpf-fluent-source-audit.md maps the stock WPF item/list/grid styles against official WPF Fluent. The stock ListBoxItem, ListViewItem, and GridViewColumnHeader templates now use plain WPF presenters and official WPF trigger/template shape instead of the previous ContentPresenterEx, FocusVisualHelper, ScrollViewerEx, and selection-active guesses. The imported dictionaries are split like the official source and merged in dependency order. ModernWpf substitutions remain documented for older-target mscorlib, Border.CornerRadius, the local GridView converter, and theme aliases. |
| Window shell | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Window.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\Window.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\WindowVisualStateTests.cs, test\ModernWpf.Theme.Tests\ColorsHelperTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, docs\window-wpf-fluent-source-audit.md |
Official WPF Fluent-backed shell substitution | docs\window-wpf-fluent-source-audit.md maps the stock WPF Window style against official WPF Fluent. ModernWpf keeps its custom WindowTitleBarControl, attached title-bar properties, WindowChrome, high-contrast caption border, and WindowHelper.FixMaximizedWindow, but the compatible content-window surface now uses official WindowForeground / WindowBackground aliases and a plain WPF ContentPresenter instead of the old ContentPresenterEx content-slot guess. Because that custom shell paints its own Light/Dark border, the dynamic WindowBorder color follows DWM ColorPrevalence, refreshes from the existing window message hook, and preserves higher-scope application overrides. |
| Stock TreeView styles | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\TreeView.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\TreeViewItem.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\TreeView.xaml, ModernWpf\Styles\TreeViewItem.xaml, ModernWpf\StockControlsResources.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\TreeView\TreeViewResourceTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, docs\treeview-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock controls | docs\treeview-wpf-fluent-source-audit.md maps the stock WPF TreeView styles against official WPF Fluent. The stock TreeViewItem template now uses plain WPF presenters, WPF triggers, official chevron glyph resources, and official active-rectangle selection indicator behavior instead of the previous TreeViewItemHelper, VisualStateEx, ContentPresenterEx, FontIconFallback, and indentation-helper guesses. ModernWpf substitutions remain documented for older-target mscorlib, Border.CornerRadius, split dictionary dependency order, and retained unused density aliases. |
| Menu / ContextMenu / MenuItem | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Menu.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ContextMenu.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\MenuItem.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\Menu.xaml, ModernWpf\Styles\ContextMenu.xaml, ModernWpf\Styles\MenuItem.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\MenuFamilyVisualStateTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, docs\menu-family-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control family | docs\menu-family-wpf-fluent-source-audit.md maps stock WPF Menu, ContextMenu, and MenuItem styles against official WPF Fluent. The previous ModernWpf WinUI-shaped guesses were deleted for these stock controls: VisualStateEx, ContentPresenterEx, BorderEx, ThemeShadowChrome, MenuPopup, Border.CornerRadius, and MenuItemHelper.VisualStateSettersEnabled are gone from the menu-family style files. The copied templates now use official WPF MenuItem role templates, WPF Popup submenu hosts, plain WPF presenters, official glyph resources, and official menu/context/flyout aliases with documented ModernWpf substitutions for TextControlContextMenu, mscorlib string resources, check-box aliases, and focus-style bridging. |
| ToolBar / Separator / Thumb | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ToolBar.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Separator.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Thumb.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\ToolBar.xaml, ModernWpf\Styles\Separator.xaml, ModernWpf\Styles\Thumb.xaml, ModernWpf\StockControlsResources.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\ToolBarFamilyVisualStateTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, docs\toolbar-family-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control family | docs\toolbar-family-wpf-fluent-source-audit.md maps stock WPF ToolBar, ToolBarTray, Separator, and generic Thumb styles against official WPF Fluent. ModernWpf now merges this family through StockControlsResources, uses official toolbar item style keys and overflow/drag chrome, and exposes official separator/thumb toolbar aliases. Documented substitutions cover local dependency merges for split dictionaries, Border.CornerRadius for older target thumb radius, mscorlib string resources, and the missing upstream MenuBorderColorDefaultBrush alias. |
| GridSplitter | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\GridSplitter.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\GridSplitter.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\GridSplitterVisualStateTests.cs, docs\gridsplitter-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\gridsplitter-wpf-fluent-source-audit.md maps the stock WPF GridSplitter style against official WPF Fluent. The previous ModernWpf solid-bar template and GridSplitterPreviewStyle guess were deleted for this stock control; the style now uses official min/thumb metrics, WPF Border / Rectangle thumb template shape, WPF triggers for pointer-over, dragging, disabled, and vertical splitter orientation, plus official GridsplitterBackground / GridsplitterForeground aliases. |
| StatusBar | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\StatusBar.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\StatusBarItem.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\StatusBar.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\StatusBarVisualStateTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\statusbar-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\statusbar-wpf-fluent-source-audit.md maps the stock WPF StatusBar and StatusBarItem styles against official WPF Fluent. The previous ModernWpf ContentPresenterEx StatusBarItem slot, old foreground-only disabled trigger, and old separator metrics were deleted for this stock control; the style now uses official StatusBar setters, official separator chrome, WPF Border / plain WPF ContentPresenter item template shape, disabled item foreground/background triggers, and the official StatusBarItemBackground / StatusBarItemBackgroundDisabled / StatusBarItemForegroundDisabled aliases. |
| ResizeGrip | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ResizeGrip.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\ResizeGrip.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\ResizeGripVisualStateTests.cs, docs\resizegrip-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\resizegrip-wpf-fluent-source-audit.md maps the stock WPF ResizeGrip style against official WPF Fluent. The previous ModernWpf tiled Path / DrawingBrush glyph, scrollbar-size min metrics, and ResizeGripDefaultStyle key shape were deleted for this stock control; the style now uses official DefaultResizeGripStyle, WPF TextBlock glyph chrome, official 12px min metrics, 8px icon glyph, SymbolThemeFontFamily, and the official ResizeGripForeground alias. |
| RichTextBox | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.HC.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.xaml |
ModernWpf\Styles\RichTextBox.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\RichTextBoxVisualStateTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\richtextbox-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\richtextbox-wpf-fluent-source-audit.md maps the stock WPF RichTextBox style against official WPF Fluent. The previous WinUI-like header, placeholder, description, ContentPresenterEx, and RichTextBoxHelper path was deleted for this stock control; the template now uses ContentBorder, PART_ContentHost, official text-control setters, and WPF ControlTemplate.Triggers for pointer-over, focused, and disabled states. WPF substitutions remain documented for TextControlContextMenu, validation adorner routing, Border.CornerRadius, and the retained unused RichEditBoxTopHeaderMargin public alias. |
| TextBox / PasswordBox | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\TextBox.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\PasswordBox.xaml |
ModernWpf\Styles\TextBox.xaml, ModernWpf\Styles\PasswordBox.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\TextBoxPasswordBoxVisualStateTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, docs\textbox-passwordbox-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control family | docs\textbox-passwordbox-wpf-fluent-source-audit.md maps the stock WPF TextBox, TextBoxBase, and PasswordBox styles against official WPF Fluent. The previous WinUI-like header, placeholder, description, reveal-button, helper visual-state, and ContentPresenterEx template branches were deleted for these stock controls; the templates now use official WPF ContentBorder, PART_ContentHost, DeleteButton, and WPF trigger shapes. WPF substitutions remain documented for TextControlContextMenu, validation adorner routing, Border.CornerRadius, TextBoxHelper.IsDeleteButton as the older-target clear-button command substitute, TextBoxHelper.IsDeleteButtonVisible as the shipped clear-button visibility gate, retained DataGridTextBoxStyle, and retained unused TextBoxTopHeaderMargin / PasswordBoxTopHeaderMargin public aliases. |
| Button | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.HC.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.xaml |
ModernWpf\Styles\Button.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\ButtonVisualStateTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\button-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\button-wpf-fluent-source-audit.md maps stock WPF Button to official PresentationFramework.Fluent. The previous WinUI VisualStateEx stock-button template was deleted; default and accent styles now use WPF ContentBorder / ContentPresenter templates and ControlTemplate.Triggers, DefaultButtonStyle targets ButtonBase, AccentButtonStyle is self-contained, and SubtleButtonStyle remains a ModernWpf-specific public style using the same trigger shape. ModernWpf substitutions remain documented for Border.CornerRadius, the existing focus visual bridge, and retained public resource aliases. |
| ToggleButton | Current official dotnet/wpf Fluent blobs at 83e6cbda760818a2ab885c4aa3fc7e3a39eedf58; current WinUI Gallery WinUIGallery/Samples/ToggleButton/ToggleButtonPage.xaml, .xaml.cs, and ToggleButtonSimple.txt at 29f62479d5c046a0b854a5868e5a7cd484572d87 |
ModernWpf\Styles\ToggleButton.xaml, ModernWpf.Gallery\Pages\BasicInputSampleFactory.cs, test\ModernWpf.WinUI.Tests\CommonStyles\ToggleButtonVisualStateTests.cs, test\ModernWpf.Gallery.Tests\ToggleButtonSourceAuditTests.cs, docs\togglebutton-wpf-fluent-source-audit.md |
Current official WPF Fluent-backed stock control plus WinUI Gallery behavior/pixel lock | Current Fluent blobs are byte-identical to the audited local source. The native multi-trigger template, nullable-state fallback, resources, source sample, Off/On output, Button/Text automation, Toggle provider, exact resting geometry, and exact checked interaction geometry are source-pinned and strict-gated in both themes. |
| RepeatButton | Current official dotnet/wpf Fluent blobs at 83e6cbda760818a2ab885c4aa3fc7e3a39eedf58; current WinUI Gallery WinUIGallery/Samples/RepeatButton/RepeatButtonPage.xaml, .xaml.cs, and RepeatButtonSimple.txt at 29f62479d5c046a0b854a5868e5a7cd484572d87 |
ModernWpf\Styles\RepeatButton.xaml, ModernWpf.Gallery\Pages\BasicInputSampleFactory.cs, test\ModernWpf.WinUI.Tests\CommonStyles\RepeatButtonVisualStateTests.cs, test\ModernWpf.Gallery.Tests\RepeatButtonSourceAuditTests.cs, docs\repeatbutton-wpf-fluent-source-audit.md |
Current official WPF Fluent-backed stock control plus WinUI Gallery behavior/pixel lock | Current Fluent blobs are byte-identical to the audited local source. The stock template keeps ContentBorder, WPF ContentPresenter, native triggers, source padding/border geometry, and documented WPF focus/resource substitutions. The current Gallery row, click count, polite live-region announcement, Button/Text automation, exact 112x32 static crop, and exact 240x32 output-row crop are now source-pinned and strict-gated in both themes. |
| RadioButton | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.HC.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.xaml |
ModernWpf\Styles\RadioButton.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\RadioButtonVisualStateTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\radiobutton-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\radiobutton-wpf-fluent-source-audit.md maps the stock WPF RadioButton style to official WPF Fluent. The WinUI VisualStateEx helper template path was deleted for this stock control; the template now uses RootBorder, RootGrid, WPF ContentPresenter, official WPF Normal / MouseOver / Pressed states, and WPF Trigger / MultiTrigger entries for checked, disabled, pointer-over, pressed, and right-to-left behavior. WPF substitutions remain documented for the focus visual bridge, Border.CornerRadius, retained ModernWpf brush aliases, and platform-owned grouping/input/automation behavior. |
| Slider | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Themes\Fluent.Light.xaml |
ModernWpf\Styles\Slider.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\SliderVisualStateTests.cs, docs\slider-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | Slider is now governed by official WPF Fluent rather than WinUI 3 source. The WinUI helper-driven VisualStateEx port and Slider-specific helper files were deleted; the style follows the official WPF trigger model, WPF MouseOver thumb state, selection-range triggers, and 20px thumb metrics while preserving existing ModernWpf resource keys. |
| Calendar / DatePicker stock styles | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Calendar.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\DatePicker.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\DefaultContextMenu.xaml |
ModernWpf\Styles\Calendar.xaml, ModernWpf\Styles\DatePicker.xaml, ModernWpf\Styles\ContextMenu.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\DatePickerVisualStateTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\calendar-datepicker-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock styles | docs\calendar-datepicker-wpf-fluent-source-audit.md maps WPF's stock Calendar and DatePicker templates against official WPF Fluent. The previous WinUI CalendarView / CalendarDatePicker stock-style mapping, ContentPresenterEx slots, VisualStateEx.Setters, and DatePickerHelper state driver are deleted for these stock controls. WPF substitutions remain documented for mscorlib, Border.CornerRadius, context-menu resource placement, and theme aliases. WinUI's selector-style DatePicker remains excluded under the no-new-controls rule. |
| TabControl / TabItem | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\TabControl.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\TabControl.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\TabView\TabViewResourceTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\tabcontrol-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\tabcontrol-wpf-fluent-source-audit.md maps the stock WPF TabControl and TabItem style against official WPF Fluent. The previous WinUI TabView-shaped VisualStateEx, ThemeShadowChrome, ContentPresenterEx, TabItemHelper, and TabControlHelper layer was deleted for this stock control. Preview 5's separate ModernWpf.Controls.TabView does not alter this stock-control contract. |
| TabView | current WinUI 3 product controls\dev\TabView\* at e1aa8f64df98d6229f6cd4074d59b654616254da; WinUI Gallery WinUIGallery\Samples\TabView\* at 3669519356c67f1376152c33ed8ea45003a91f3a |
ModernWpf.Controls\TabView\*, ModernWpf.Gallery\Pages\TabViewSampleFactory.cs, ModernWpf\ModernWpfControlsResources.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\TabView\TabViewApiTests.cs, test\ModernWpf.WinUI.Tests\TabView\TabViewSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\TabViewSourceAuditTests.cs, test\ModernWpf.Theme.Tests\TabViewThemeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\tabview-winui3-source-audit.md |
Source-backed WPF port | Preview 5 preserves the current public API and resource surface, application-owned close/removal, selection and content fallback, all width and close-overlay modes, overflow scrolling, keyboard/focus behavior, selection and scroll automation, drag/reorder, and all ten current Gallery examples. WPF substitutes IDataObject, DragDropEffects, WPF triggers, and application-owned System.Windows.Window tear-out/rejoin events for WinRT data packages, ListView presenter states, and native AppWindow move-size integration. Stock WPF TabControl remains a separate official WPF Fluent surface. |
| Layout chrome controls / ContentPresenter text surface | current-root Border/Grid/StackPanel/ContentPresenter/framework core sources, XamlOM, and Border/Grid/StackPanel/ContentPresenter integration suites | ModernWpf\Controls\BorderEx.cs, ModernWpf\Controls\GridEx.cs, ModernWpf\Controls\StackPanelEx.cs, ModernWpf\Controls\ContentPresenterEx.cs, ModernWpf\Controls\ContentControlEx.cs, ModernWpf\Controls\LayoutChromeHelper.cs, ModernWpf\Controls\Primitives\ControlHelper.cs, layout/source tests, docs\layout-chrome-winui3-source-audit.md |
Source-backed WPF foundation | Refreshed against official commit de3e767333c2f0717a6a70cb22bd192ced5ad885. Border/Grid/StackPanel/ContentPresenter/XamlOM/integration blobs remain byte-current after root move 8463f45162149de0ec3ad7df752596893fe3e13e; current framework.cpp changes optimize style/resource/event/type/template internals without changing mapped chrome/layout. ModernWpf retains source BackgroundSizing, rounded border difference geometry, clip intersection/hit testing, padding/border measure, signed Grid spacing/spans, visible-child StackPanel spacing/snap points, ContentPresenter text metadata/MaxLines substitution, and ContentControl delegation. ContentControlEx now makes its shipped ContentTransitions surface behavioral by running NavigationThemeTransition through paired WPF presenters and the existing navigation-animation engine, with completed cleanup and no new public API. The deterministic renderer detaches its sampled windowless GridEx; the full 57-test slice including dynamic invalidation and content transitions passes. Controls builds net462/net8/net10 warning-free. WPF geometry, MaxLines/text-scale, snap-host, composition-transition, and style/resource-engine substitutions remain explicit. |
| LayoutPanel | controls\dev\LayoutPanel\LayoutPanel.idl, controls\dev\LayoutPanel\LayoutPanel.h, controls\dev\LayoutPanel\LayoutPanel.cpp, controls\dev\LayoutPanel\LayoutPanelLayoutContext.h, controls\dev\LayoutPanel\LayoutPanelLayoutContext.cpp, controls\dev\LayoutPanel\APITests\LayoutPanelTests.cs |
ModernWpf.Controls\LayoutPanel\LayoutPanel.cs, ModernWpf.Controls\LayoutPanel\LayoutPanelLayoutContext.cs, test\ModernWpf.WinUI.Tests\LayoutPanel\LayoutPanelApiTests.cs, test\ModernWpf.WinUI.Tests\LayoutPanel\LayoutPanelSourceAuditTests.cs, docs\layoutpanel-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official commit de3e767333c2f0717a6a70cb22bd192ced5ad885. The entire upstream LayoutPanel tree remains byte-identical apart from the repository root move. ModernWpf follows the source public surface, padding/border size adjustment and zero clamp, default child fill arrange, custom Layout delegation, layout-context children/state exposure, and layout replacement semantics that uninitialize/unhook the old layout and initialize/hook the new one. Source-derived tests also lock WPF chrome, rounded clip/hit testing, and XAML parsing. The current WinUI Gallery commit has no LayoutPanel page, so row 8.36 uses product-source, layout/chrome/lifecycle, and net462/net8/net10 build gates without inventing a live comparison. Focused tests pass 9/9. WPF substitutions remain documented for dependency-property metadata, panel protected chrome, rounded layout clip/hit-test geometry, and Children().GetView() through a WPF IReadOnlyList<UIElement> wrapper. |
| ListView / GridView | dxaml\xcp\dxaml\lib\ListViewBase_Partial.cpp, dxaml\xcp\dxaml\lib\ListViewBase_Partial_Interaction.cpp, dxaml\xcp\dxaml\lib\ListViewBase_Partial_Selection.cpp, dxaml\xcp\dxaml\lib\ListViewBaseItem_Partial.cpp, dxaml\xcp\dxaml\lib\ListViewBaseAutomationPeer_Partial.cpp, dxaml\xcp\dxaml\lib\ListViewBaseItemAutomationPeer_Partial.cpp, dxaml\xcp\dxaml\lib\ListViewAutomationPeer_Partial.cpp, dxaml\xcp\dxaml\lib\GridViewAutomationPeer_Partial.cpp, dxaml\xcp\dxaml\lib\ListView_Partial.cpp, dxaml\xcp\dxaml\lib\GridView_Partial.cpp, controls\dev\CommonStyles\ListViewItem_themeresources.xaml, controls\dev\CommonStyles\GridViewItem_themeresources.xaml, controls\dev\CommonStyles\ListViewItem_themeresources_perf2026.xaml, dxaml\test\native\external\controls\listviewbaseitem\ListViewBaseItemIntegrationTests.cpp, dxaml\test\native\external\controls\listviewbaseitem\ListViewBaseItemAutomationIntegrationTests.cpp, dxaml\test\native\external\enterprise\ListView\ListViewIntegrationTests.cpp, dxaml\test\native\external\enterprise\GridView\GridViewIntegrationTests.cpp, WinUIGallery\Samples\GridView\GridViewPage.xaml, WinUIGallery\Samples\GridView\GridViewPage.xaml.cs, WinUIGallery\Samples\GridView\BasicGridviewSimpleDatatemplate.txt, WinUIGallery\Samples\GridView\GridviewLayoutCustomization.txt, WinUIGallery\Samples\GridView\ContentInsideGridview.txt |
ModernWpf.Controls\ListView\ListViewBase.cs, ModernWpf.Controls\ListView\ListViewBaseItem.cs, ModernWpf.Controls\ListView\ListViewBaseAutomationPeer.cs, ModernWpf.Controls\ListView\ListViewBaseItemAutomationPeer.cs, ModernWpf.Controls\ListView\ListView.xaml, ModernWpf.Controls\ListView\GridView.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, ModernWpf.Gallery\Pages\CollectionsSampleFactory.cs, test\ModernWpf.WinUI.Tests\ListView\ListViewApiTests.cs, test\ModernWpf.WinUI.Tests\ListView\ListViewSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\listview-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery 29f62479d5c046a0b854a5868e5a7cd484572d87. The item templates retain source-named CommonStates and multiselect outcomes through VisualStateEx.Setters; the current perf2026 dictionary is state/resource-equivalent. Item interaction retains Enter/Space, Alt+Space exclusion, selection-state routing, brush focus resources, and own-container clicked-content fallback. The audit fixes the shared accessibility surface: parent/item peers now publish source class names and List/ListItem roles, and item Invoke is exposed only while IsItemClickEnabled is true. Both custom collection styles enable WPF PanningMode=Both, allowing their templated ScrollViewerEx controls to process touch-manipulation scrolling. All three current Gallery examples, options, names, and outputs are pinned. Fresh exact 657x412 crops pass at Light 1.61 / Dark 1.60; required output crops pass at 6.40 / 6.64, with zero static size tolerance, a four-pixel output metric cap, and fresh recordings proving blank-to-You clicked Item 1. change. Product/source tests pass 12/12 and Gallery slices pass 3/3 on net8/net10. WPF substitutions remain documented for missing ListViewItemPresenter, duplicate state names, WPF selection/virtualization/layout/drag services, touch panning, SemanticZoom/gamepad paths, and WinUI raw accessibility view. |
| VariableSizedWrapGrid / WrapGrid / ItemsWrapGrid | current root dxaml\xcp\dxaml\lib runtime/occupancy sources, generated WinRT/core headers, XamlOM, and all three native integration suites |
ModernWpf\Controls\VariableSizedWrapGrid.cs, ModernWpf\Controls\WrapGrid.cs, ModernWpf\Controls\ItemsWrapGrid.cs, product/Gallery source tests, ModernWpf.Gallery\Pages\CollectionsSampleFactory.cs, docs\variablesizedwrapgrid-winui3-source-audit.md |
Source-backed WPF layout family | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885; all 17 audited blobs remain byte-identical after root move 8463f45162149de0ec3ad7df752596893fe3e13e. ModernWpf retains current public properties/defaults, first-item sizing, orientation/MaximumRowsOrColumns, positive span normalization, first-fit finite occupancy, oversized spans, alignment, XAML, and realized-child range. Current Gallery has no standalone family page; its current GridView customization still consumes horizontal MaxItemsWrapGrid and live three-to-four updates. Product/source tests pass 12/12, Gallery consumer tests 1/1 on net8/net10, and Controls builds net462/net8/net10 warning-free. WPF boundaries remain explicit for native OccupancyBlock storage, recycling/effective viewport/cache/group-sticky/insertion services, keyboard/oriented panel hooks, and inherited compatibility surface. |
| Repeater / ItemsRepeater layouts | controls\dev\Repeater\ItemsRepeater.*, controls\dev\Repeater\ViewportManager.*, controls\dev\Repeater\RepeaterAutomationPeer.*, controls\dev\Repeater\StackLayout.*, controls\dev\Repeater\FlowLayout.*, controls\dev\Repeater\UniformGridLayout.*, controls\dev\Repeater\ItemsRepeaterScrollHost.*, controls\dev\Repeater\ItemsSourceView.*, controls\dev\Repeater\RecyclePool.*, controls\dev\Repeater\SelectionModel.*, controls\dev\Repeater\APITests\AccessibilityTests.cs, controls\dev\Repeater\APITests\RepeaterTests.cs, WinUIGallery\Samples\ItemsRepeater\* |
ModernWpf.Controls\Repeater\ItemsRepeater\*.cs, ModernWpf.Controls\Repeater\Automation\RepeaterAutomationPeer.cs, ModernWpf.Controls\Repeater\Layouts\StackLayout\*.cs, ModernWpf.Controls\Repeater\Layouts\FlowLayout\*.cs, ModernWpf.Controls\Repeater\Layouts\UniformGridLayout\*.cs, ModernWpf.Controls\Repeater\SelectionModel\*.cs, ModernWpf.Gallery\Pages\CollectionsSampleFactory.cs, test\ModernWpf.WinUI.Tests\Repeater\*.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, docs\repeater-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. The audit pins current post-root runtime/layout/source/recycle/selection/peer/test blobs and records WinUI's viewport consolidation as a deliberate WPF downlevel adaptation. ModernWpf retains source item/template/recycle/selection, layout, anchoring, viewport-extent, 60-pass measure-cycle, and null-state collection-change behavior. The existing automation peer now has a direct upstream accessibility regression proving Group role, unrealized-peer filtering, peerless-container flattening, and item-index order. The converted six-example Gallery page, Low chrome bars, snippets, options, and runtime interactions remain current. Fresh exact 425x88 installed-Gallery comparisons pass at Light 0.53 / Dark 0.42 under 1.0, and Light/Dark scroll recordings pass. Product/source/accessibility tests pass 69/69; unavailable WinUI effective viewport, ScrollPresenter, phasing, composition, raw TestUI, gamepad, and WinRT metadata remain documented platform substitutions. |
| CheckBox | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\CheckBox.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\CheckBox.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\CheckBoxVisualStateTests.cs, docs\checkbox-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\checkbox-wpf-fluent-source-audit.md maps the stock WPF CheckBox style against official WPF Fluent. The previous WinUI CombinedStates template and CheckBoxHelper state driver were deleted; the default template now uses official WPF Trigger / MultiTrigger entries, RootBorder / RootGrid / ControlBorderIconPresenter structure, WPF text glyph resources, a plain WPF ContentPresenter, and official glyph brush aliases. WPF substitutions remain documented for Border.CornerRadius, ModernWpf focus visual bridging, retained public brush aliases, and DataGrid-specific CheckBox styles. |
| Expander | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\Expander.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Controls\AnimationFactorToValueConverter.cs, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\Expander.xaml, ModernWpf\Controls\Primitives\AnimationFactorToValueConverter.cs, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\Expander\ExpanderApiTests.cs, test\ModernWpf.WinUI.Tests\Expander\ExpanderInteractionTests.cs, docs\expander-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\expander-wpf-fluent-source-audit.md maps the stock WPF Expander style against official WPF Fluent. The previous WinUI-shaped VisualStateEx, ToggleButtonHelper, ContentPresenterEx, and FontIconFallback guesses were deleted; the default style now uses official WPF trigger templates, local chevron glyph templates, plain WPF ContentPresenter slots, official collapse animation storyboards, DefaultControlFocusVisualStyle, and theme aliases for official Expander keys. WPF substitutions remain documented for older-target mscorlib, Border.CornerRadius, and the localized animation converter. |
| WrapPanel | controls\dev\WrapPanel\WrapPanel.idl, controls\dev\WrapPanel\WrapPanel.h, controls\dev\WrapPanel\WrapPanel.cpp, controls\dev\Generated\WrapPanel.properties.cpp, controls\dev\Generated\WrapPanel.properties.h, controls\dev\WrapPanel\APITests\WrapPanelTests.cs |
ModernWpf.Controls\WrapPanel\WrapPanel.cs, test\ModernWpf.WinUI.Tests\WrapPanel\WrapPanelApiTests.cs, test\ModernWpf.WinUI.Tests\WrapPanel\WrapPanelSourceAuditTests.cs, docs\wrappanel-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official commit de3e767333c2f0717a6a70cb22bd192ced5ad885. The full runtime, generated-property, build-item, and API-test payload remains byte-identical apart from the repository root move. ModernWpf follows the source public surface and invalidation set, UV row-building algorithm, horizontal/vertical padding and spacing, collapsed-child behavior, ItemsStretch.Last, variable cross-size rows, and arrange cache rule that preserves measured row breaks unless the arranged primary axis shrinks. The current WinUI Gallery has no WrapPanel page, so row 8.37 uses product-source, 20/20 source/layout regressions, and clean net462/net8/net10 builds without inventing a live comparison. WPF substitutions remain documented for Orientation type mapping, dependency-property metadata, WPF desired-size clamping, and collapsed arrange cleanup. |
| AutoSuggestBox | dxaml\xcp\dxaml\lib\AutoSuggestBox_Partial.cpp, dxaml\xcp\dxaml\lib\AutoSuggestBox_Partial.h, dxaml\xcp\dxaml\lib\AutoSuggestBoxTextChangedEventArgs_Partial.h, dxaml\xcp\dxaml\lib\AutoSuggestBoxAutomationPeer_Partial.cpp, dxaml\xcp\dxaml\lib\ListViewBase_Partial_Interaction.cpp, dxaml\xcp\tools\XCPTypesAutoGen\Modules\AutoSuggestBox\AutoSuggestBox.cs, dxaml\xcp\tools\XCPTypesAutoGen\Modules\AutoSuggestBox\AutoSuggestBoxAutomationPeer.cs, controls\dev\AutoSuggestBox\AutoSuggestBox_themeresources.xaml, controls\dev\AutoSuggestBox\AutoSuggestBox_themeresources_perf2026.xaml, controls\dev\AutoSuggestBox\AutoSuggestBoxHelper.cpp, controls\dev\Generated\AutoSuggestBoxHelper.properties.cpp, controls\dev\AutoSuggestBox\APITests\AutoSuggestBoxTests.cs, controls\dev\AutoSuggestBox\InteractionTests\AutoSuggestBoxTests.cs, dxaml\test\native\external\controls\autosuggestbox\AutoSuggestBoxIntegrationTests.cpp, dxaml\test\native\external\controls\autosuggestbox\AutoSuggestBoxAutomationPeerIntegrationTests.cpp, WinUIGallery\Samples\AutoSuggestBox\AutoSuggestBoxPage.xaml, WinUIGallery\Samples\AutoSuggestBox\AutoSuggestBoxPage.xaml.cs, WinUIGallery\Samples\AutoSuggestBox\BasicAutosuggestBox.txt, WinUIGallery\Samples\AutoSuggestBox\AutosuggestboxProvidesSearchboxExperience.txt |
ModernWpf.Controls\AutoSuggestBox\AutoSuggestBox.cs, ModernWpf.Controls\AutoSuggestBox\AutoSuggestBox.properties.g.cs, ModernWpf.Controls\AutoSuggestBox\AutoSuggestBoxTextChangedEventArgs.cs, ModernWpf.Controls\AutoSuggestBox\AutoSuggestBoxAutomationPeer.cs, ModernWpf.Controls\AutoSuggestBox\AutoSuggestBoxListView.cs, ModernWpf.Controls\AutoSuggestBox\AutoSuggestBoxListViewItem.cs, ModernWpf.Controls\AutoSuggestBox\AutoSuggestBox.xaml, ModernWpf\Styles\AutoSuggestBox.xaml, ModernWpf.Gallery\Pages\TextSampleFactory.cs, test\ModernWpf.WinUI.Tests\AutoSuggestBox\AutoSuggestBoxApiTests.cs, test\ModernWpf.WinUI.Tests\AutoSuggestBox\AutoSuggestBoxInteractionTests.cs, test\ModernWpf.WinUI.Tests\AutoSuggestBox\AutoSuggestBoxSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\autosuggestbox-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. Every classic runtime/event-args/peer/list/XamlOM/helper/theme/test blob remains a byte-identical root move; perf2026 only replaces discrete assignments with setters. ModernWpf carries source delayed-counter/CheckCurrent behavior, user-text restoration, query and suggestion ordering, selection modes, Invoke Group peer, popup depth/insets/corner filtering, resources, and current two-example Gallery filtering/search behavior. Exact 300x32 installed-Gallery crops pass Light and Dark at 0.01 under 0.1, with zero size tolerance. Fresh diagnostic evidence proves ModernWpf's real-keyboard ae to nonblank 300x50 Aegean popup/output; the installed reference still exposes no suggestions, so no cross-app interaction delta is claimed. Product/source tests pass 12/12, Gallery/source-shape tests pass 4/4 on net8/net10, and net462 builds warning-free. WPF substitutions remain documented for SIP/IME and validation forwarding, popup/overlay/root-bounds placement, reversed-above ordering, shared TextBox triggers/icons, header placement, and WPF selected-item storage. |
| RadioButtons | controls\dev\RadioButtons\RadioButtons.idl, controls\dev\RadioButtons\RadioButtons.cpp, controls\dev\RadioButtons\RadioButtons.xaml, controls\dev\RadioButtons\RadioButtons_themeresources.xaml, controls\dev\RadioButtons\RadioButtonsAutomationPeer.cpp, controls\dev\RadioButtons\RadioButtonsElementFactory.cpp, controls\dev\RadioButtons\ColumnMajorUniformToLargestGridLayout.cpp, controls\dev\Generated\RadioButtons.properties.cpp, controls\dev\RadioButtons\APITests\RadioButtonsTests.cs, controls\dev\RadioButtons\InteractionTests\RadioButtonsTests.cs |
ModernWpf.Controls\RadioButtons\RadioButtons.cs, ModernWpf.Controls\RadioButtons\RadioButtons.xaml, ModernWpf.Controls\RadioButtons\RadioButtonsAutomationPeer.cs, ModernWpf.Controls\RadioButtons\RadioButtonsElementFactory.cs, ModernWpf.Controls\RadioButtons\ColumnMajorUniformToLargestGridLayout.cs, ModernWpf.Controls\RadioButtons\RadioButtonsTestHooks.cs, test\ModernWpf.WinUI.Tests\RadioButtons\RadioButtonsApiTests.cs, test\ModernWpf.WinUI.Tests\RadioButtons\RadioButtonsInteractionTests.cs, test\ModernWpf.WinUI.Tests\RadioButtons\RadioButtonsSourceAuditTests.cs, docs\radiobuttons-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and product fix 8855743667ca40c93bf655f3779f36cb576088ac. ModernWpf now omits nonexistent items from SelectionChangedEventArgs.RemovedItems and AddedItems, eliminating null placeholders on first selection, out-of-range selection, and deselection. The source automation peer, MaxColumns validation and template binding, item factory/template-selector order, selection, keyboard/layout behavior, and UIA position/size metadata remain pinned. The current Gallery has only the distinct singular RadioButton page, so row 8.38 uses current product-source, 23/23 behavior/layout/accessibility tests, and successful net462/net8/net10 builds without substituting that page. WPF substitutions remain documented for focus/gamepad handling, access keys, child-handler revokers, retained internal test hooks, and WPF automation metadata. |
| ColorPicker / ColorSpectrum | controls\dev\ColorPicker\ColorPicker.idl, controls\dev\ColorPicker\ColorPicker.cpp, controls\dev\ColorPicker\ColorPicker.h, controls\dev\ColorPicker\ColorPicker.xaml, controls\dev\ColorPicker\ColorSpectrum.idl, controls\dev\ColorPicker\ColorSpectrum.cpp, controls\dev\ColorPicker\ColorSpectrum.h, controls\dev\ColorPicker\ColorSpectrum.xaml, controls\dev\ColorPicker\ColorPickerSlider.idl, controls\dev\ColorPicker\ColorPickerSlider.cpp, controls\dev\ColorPicker\ColorPickerSliderAutomationPeer.cpp, controls\dev\ColorPicker\ColorSpectrumAutomationPeer.cpp, controls\dev\ColorPicker\ColorPicker_themeresources.xaml, controls\dev\Common\ColorConversion.cpp, controls\dev\Common\ColorConversion.h, WinUI Gallery ColorPickerPage.xaml, ColorPickerPage.xaml.cs, ColorPickerProperties.txt |
ModernWpf.Controls\ColorPicker\ColorPicker.cs, ModernWpf.Controls\ColorPicker\ColorSpectrum.cs, ModernWpf.Controls\ColorPicker\ColorPickerSlider.cs, ModernWpf.Controls\ColorPicker\ColorConversion.cs, ModernWpf.Controls\ColorPicker\ColorSpectrumAutomationPeer.cs, ModernWpf.Controls\ColorPicker\ColorPickerSliderAutomationPeer.cs, ModernWpf.Controls\ColorPicker\ColorPicker.xaml, ModernWpf.Gallery\Pages\BasicInputSampleFactory.cs, ModernWpf.Gallery\Samples\SampleCode\ColorPicker\ColorPickerProperties.txt, test\ModernWpf.WinUI.Tests\ColorPicker\ColorPickerApiTests.cs, test\ModernWpf.Gallery.Tests\ColorPickerSourceAuditTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\colorpicker-winui3-source-audit.md |
Source-backed WPF port | Refreshed against current official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87; all 18 pinned product/peer/theme/conversion/resource/test blobs remain byte-identical to the source-shaped port. The current Gallery snippet is now external and the source options are hosted through GalleryExample.OptionsContent. CheckBox/RadioButtons/ColorSpectrum roles, names, Toggle/Value providers, property/shape behavior, and preview propagation are pinned. The theme probe uses HexTextBox rather than theme-invariant spectrum luminance, and Alpha uses a common 900px viewport to preserve the complete live 312x566 surface. Strict exact-size installed-Gallery gates under 4.0 pass Default at Light 0.94 / Dark 0.96, More at 0.82 / 0.79, Opacity at 1.60 / 1.68, and Ring at 1.11 / 1.23. WPF substitutions remain documented for SpectrumBrush, synchronous bitmap creation, localized resource strings, WinRT automation notifications, and raw TestUI pointer automation. |
| ComboBox | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\ComboBox.xaml |
ModernWpf\Styles\ComboBox.xaml, test\ModernWpf.WinUI.Tests\ComboBox\ComboBoxApiTests.cs, test\ModernWpf.WinUI.Tests\ComboBox\ComboBoxKeyboardNavigationTests.cs, docs\combobox-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\combobox-wpf-fluent-source-audit.md maps WPF's stock ComboBox style against official WPF Fluent. ModernWpf deleted the old WinUI-shaped ComboBoxHelper, VisualStateEx, ContentPresenterEx, and FontIconFallback stock-style layer. WPF substitutions are documented for System.Runtime to mscorlib, Border.CornerRadius to Border.CornerRadius, retaining DataGrid adapter style keys as direct-reference compatibility resources, and restoring the classic WPF editable IsTabStop=False setter so backward and Ctrl+Tab traversal leave PART_EditableTextBox. |
| DataGrid | D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Styles\DataGrid.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Controls\FallbackBrushConverter.cs, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Light.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\Dark.xaml, D:\repos\wpf\src\Microsoft.DotNet.Wpf\src\Themes\PresentationFramework.Fluent\Resources\Theme\HC.xaml |
ModernWpf\Styles\DataGrid.xaml, ModernWpf\Controls\Primitives\FallbackBrushConverter.cs, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\CommonStyles\DataGridVisualStateTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, test\ModernWpf.WinUI.Tests\TemplateParityTests.cs, docs\datagrid-wpf-fluent-source-audit.md |
Official WPF Fluent-backed stock control | docs\datagrid-wpf-fluent-source-audit.md maps WPF's stock DataGrid style against official WPF Fluent. ModernWpf deleted the old DataGridHelper, DataGridRowHelper, DataGridCellPresenter, ContentPresenterEx, FontIconFallback, DataGridCellExpanded, and row-group header guesses from the stock DataGrid path. The copied style now uses official WPF cell, row, row-header, column-header, column-floating-header, drop-separator, default DataGrid, and DataGrid CheckBox element styles with documented substitutions for mscorlib, Border.CornerRadius, and the localized FallbackBrushConverter. |
| AnnotatedScrollBar | controls\dev\AnnotatedScrollBar\AnnotatedScrollBar.idl, controls\dev\AnnotatedScrollBar\AnnotatedScrollBar.h, controls\dev\AnnotatedScrollBar\AnnotatedScrollBar.cpp, controls\dev\AnnotatedScrollBar\AnnotatedScrollBar.xaml, controls\dev\AnnotatedScrollBar\AnnotatedScrollBar_themeresources.xaml, controls\dev\AnnotatedScrollBar\AnnotatedScrollBar_themeresources_perf2026.xaml, controls\dev\AnnotatedScrollBar\AnnotatedScrollBarPanningInfo.cpp, controls\dev\AnnotatedScrollBar\AnnotatedScrollBarLabel.cpp, controls\dev\AnnotatedScrollBar\APITests\AnnotatedScrollBarTests.cs, controls\dev\AnnotatedScrollBar\InteractionTests\AnnotatedScrollBarInteractionTests.cs, controls\dev\ScrollPresenter\ScrollPresenterPrimitives.idl, WinUIGallery\Samples\AnnotatedScrollBar\AnnotatedScrollBarPage.xaml, WinUIGallery\Samples\AnnotatedScrollBar\AnnotatedScrollBarPage.xaml.cs, WinUIGallery\Samples\AnnotatedScrollBar\AnnotatedscrollbarLinkedScrollview.txt |
ModernWpf.Controls\AnnotatedScrollBar\AnnotatedScrollBar.cs, ModernWpf.Controls\AnnotatedScrollBar\AnnotatedScrollBar.xaml, ModernWpf.Controls\AnnotatedScrollBar\AnnotatedScrollBarLabel.cs, ModernWpf.Controls\AnnotatedScrollBar\AnnotatedScrollBarPanningInfo.cs, ModernWpf.Controls\AnnotatedScrollBar\ScrollControllerPrimitives.cs, ModernWpf.Gallery\Pages\ScrollingSampleFactory.cs, test\ModernWpf.WinUI.Tests\AnnotatedScrollBar\AnnotatedScrollBarApiTests.cs, test\ModernWpf.WinUI.Tests\AnnotatedScrollBar\AnnotatedScrollBarSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\annotatedscrollbar-winui3-source-audit.md |
Source-backed WPF port | Refreshed against current official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87; substantive product and converted Gallery inputs remain byte-current. ModernWpf follows source controller validation/clamping/requests/cancellation/direction, vertical panning shape, label creation/collision/tooltip/thumb ghost, source parts/resources, and no-standalone-peer ownership. The visible Gallery header/snippets now use current source ScrollView and ScrollPresenter.VerticalScrollController vocabulary while the actual WPF ScrollViewer/WrapPanel event adapter remains runtime-covered. Exact installed-Gallery 52x500 crops pass Light 1.20 and Dark 1.21 under a strict 1.5 zero-size-tolerance gate; scroll recordings prove 0%→55% movement. WPF substitutions remain documented for ScrollPresenter/composition/touch services, dispatcher/mouse input, tooltip hosting, item layout, and resource resolution. |
| TeachingTip | controls/dev/TeachingTip/TeachingTip.idl, controls/dev/TeachingTip/TeachingTip.h, controls/dev/TeachingTip/TeachingTip.cpp, controls/dev/TeachingTip/TeachingTip.xaml, controls/dev/TeachingTip/TeachingTip_themeresources.xaml, controls/dev/TeachingTip/TeachingTip_themeresources_perf2026.xaml, controls/dev/TeachingTip/TeachingTipTemplateSettings.cpp, controls/dev/TeachingTip/TeachingTipOpenedEventArgs.cpp, controls/dev/TeachingTip/TeachingTipClosingEventArgs.cpp, controls/dev/TeachingTip/TeachingTipClosedEventArgs.cpp, controls/dev/TeachingTip/TeachingTipAutomationPeer.cpp, controls/dev/TeachingTip/APITests/TeachingTipTests.cs, controls/dev/TeachingTip/InteractionTests/TeachingTipTests.cs |
ModernWpf.Controls/TeachingTip/TeachingTip.cs, ModernWpf.Controls/TeachingTip/TeachingTip.xaml, ModernWpf.Controls/TeachingTip/TeachingTipTemplateSettings.cs, ModernWpf.Controls/TeachingTip/TeachingTipOpenedEventArgs.cs, ModernWpf.Controls/TeachingTip/TeachingTipClosingEventArgs.cs, ModernWpf.Controls/TeachingTip/TeachingTipClosedEventArgs.cs, ModernWpf.Controls/TeachingTip/TeachingTipAutomationPeer.cs, test/ModernWpf.WinUI.Tests/TeachingTip/TeachingTipApiTests.cs, test/ModernWpf.WinUI.Tests/TeachingTip/TeachingTipSourceAuditTests.cs, tools/visual-checks/Run-GalleryVisualChecks.ps1, docs/teachingtip-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official commit de3e767333c2f0717a6a70cb22bd192ced5ad885. Current template/resources remain source-shaped; the only post-snapshot code change compiles test hooks out of production. ModernWpf now additionally mirrors native popup automation-name/ID forwarding with title fallback and live property refresh. The peer retains source Pane/Window and Window-provider semantics. Strict installed-Gallery proof requires exact 135x32 closed and 224x64 open geometry under 4.0 / 10.0 gates: Light 3.43 / 9.30, Dark 2.94 / 8.28. Tests cover source open/close timing, cancellation/deferral, light dismiss, placement, resources, peer state, popup forwarding, source snapshot, and visual gates. WPF substitutions remain documented for XamlRoot/popup-root UIA integration, WinRT notification/window events, compositor rendering, F6/gamepad focus, Axe scans, and raw TestUI automation. |
| RatingControl | src\controls\dev\RatingControl\RatingControl.cpp, src\controls\dev\RatingControl\RatingControl.h, src\controls\dev\RatingControl\RatingControl.xaml, src\controls\dev\RatingControl\RatingControl_themeresources.xaml, src\controls\dev\RatingControl\RatingControlAutomationPeer.cpp, src\controls\dev\RatingControl\RatingItemInfo.cpp, src\controls\dev\RatingControl\RatingItemFontInfo.cpp, src\controls\dev\RatingControl\RatingItemImageInfo.cpp, src\controls\dev\RatingControl\APITests\RatingControlTests.cs, src\controls\dev\RatingControl\InteractionTests\RatingControlTests.cs |
ModernWpf.Controls\RatingControl\RatingControl.cs, ModernWpf.Controls\RatingControl\RatingControl.properties.cs, ModernWpf.Controls\RatingControl\RatingControl.xaml, ModernWpf.Controls\RatingControl\RatingControlAutomationPeer.cs, ModernWpf.Controls\RatingControl\RatingItemImageInfo.cs, ModernWpf\Controls\RatingItemInfo.cs, ModernWpf\Controls\RatingItemFontInfo.cs, ModernWpf\Styles\RatingControl.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\RatingControl\RatingControlApiTests.cs, test\ModernWpf.WinUI.Tests\RatingControl\RatingControlInteractionTests.cs, docs\ratingcontrol-winui3-source-audit.md |
Source-backed WPF port | docs\ratingcontrol-winui3-source-audit.md maps the whole control against WinUI 3 source. ModernWpf deleted the WPF-only RatingItemPathInfo API, path templates, path theme resources, and path fallback tests because local WinUI 3 source only has font and image item-info types. The WPF port now follows source template shape for MinHeight, LayoutRoot.Background, CaptionStackPanel, source caption metrics, named translate transforms, and foreground/background rating panels represented by StackPanelEx. The code now follows source-shaped resource caching, glyph measurement for scaled rendering size, image item sizing, net item spacing, 12px caption spacing, reset size, first-item pointer offset, and pointer-capture tracking. Tests cover source template/resources, font/image defaults, size resource changes, keyboard/value coercion, dependency-property binding, and automation value/range behavior. WPF substitutions remain documented for composition expression animation, pointer cancellation/device details, gamepad focus engagement, element sounds, TextLineBounds, AutomationProperties.AccessibilityView=Raw, and the currently loaded-but-unused RatingControlCaptionTopMargin resource. |
| PagerControl | controls\dev\PagerControl\PagerControl.cpp, controls\dev\PagerControl\PagerControl.h, controls\dev\PagerControl\PagerControl.idl, controls\dev\PagerControl\PagerControl.xaml, controls\dev\PagerControl\PagerControl_themeresources.xaml, controls\dev\PagerControl\PagerControl_themeresources_perf2026.xaml, controls\dev\PagerControl\PagerControlTemplateSettings.cpp, controls\dev\PagerControl\PagerControlAutomationPeer.cpp, controls\dev\PagerControl\Strings\en-us\Resources.resw, controls\dev\PagerControl\APITests\PagerControlTests.cs, controls\dev\PagerControl\InteractionTests\PagerControlTests.cs |
ModernWpf.Controls\PagerControl\PagerControl.cs, ModernWpf.Controls\PagerControl\PagerControl.xaml, ModernWpf.Controls\PagerControl\PagerControlTemplateSettings.cs, ModernWpf.Controls\PagerControl\PagerControlAutomationPeer.cs, ModernWpf.Controls\PagerControl\Strings\Resources.resx, test\ModernWpf.WinUI.Tests\PagerControl\PagerControlApiTests.cs, test\ModernWpf.WinUI.Tests\PagerControl\PagerControlSourceAuditTests.cs, docs\pagercontrol-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official commit de3e767333c2f0717a6a70cb22bd192ced5ad885. All runtime, API, peer, resource, legacy-theme, and upstream test blobs remain byte-identical to the prior audit. The new perf2026 dictionary changes only equivalent storyboards to setters, already represented by ModernWpf's VisualStateEx.Setters. ModernWpf follows the source RootGrid, NumberBoxDisplay, ComboBoxDisplay, NumberPanelItemsRepeater, selection indicator, finite/infinite template-setting collections, source Auto threshold (ComboBox below 10; NumberBox at/above 10 and infinite), edge-button state logic, localized navigation automation strings, ellipsis algorithms, and Menu selection automation peer shape. The current WinUI Gallery commit has no PagerControl page, so row 8.35 uses product-source, behavior/accessibility, template/resource, and net462/net8/net10 build gates without substituting PipsPager or historical Gallery content. Focused tests pass 14/14. WPF substitutions remain documented for VisualStateEx.Setters, GridEx, SymbolIcon(Symbol.More), mixed object repeater items, WPF focus traversal, and English-only resource strings. |
| InfoBadge | controls\dev\InfoBadge\InfoBadge.cpp, controls\dev\InfoBadge\InfoBadge.h, controls\dev\InfoBadge\InfoBadge.xaml, controls\dev\InfoBadge\InfoBadge_themeresources.xaml, controls\dev\InfoBadge\InfoBadgeTemplateSettings.cpp, controls\dev\InfoBadge\InfoBadgeTemplateSettings.h, controls\dev\Generated\InfoBadge.properties.cpp, controls\dev\Generated\InfoBadgeTemplateSettings.properties.cpp, controls\dev\CommonStyles\Common_themeresources_any.xaml |
ModernWpf.Controls\InfoBadge\InfoBadge.cs, ModernWpf.Controls\InfoBadge\InfoBadge.xaml, ModernWpf.Controls\InfoBadge\InfoBadgeTemplateSettings.cs, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\InfoBadge\InfoBadgeApiTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, docs\infobadge-winui3-source-audit.md |
Source-backed WPF port | docs\infobadge-winui3-source-audit.md maps the whole control against current WinUI 3 source. The WPF port follows source display-kind selection, animated states, source RootGrid shape through GridEx, theme resources, informational solid-neutral background, and source SizeChanged radius ownership. A WPF pre-arrange bridge seeds the same radius before the first rendered frame, fixing a square NavigationView-hosted badge. Exact installed-Gallery 16x16 crops pass a strict 5.0 gate at Light 4.44 and Dark 3.73; tests cover rendered circular corners and center fill as well as API/template/resource behavior. Other substitutions remain documented for WinUI Grid.CornerRadius, template AutomationProperties.AccessibilityView=Raw, and WinUI's generated hresult_out_of_bounds exception path. |
| InfoBar | controls\dev\InfoBar\InfoBar.cpp, controls\dev\InfoBar\InfoBar.h, controls\dev\InfoBar\InfoBar.xaml, controls\dev\InfoBar\InfoBar.idl, controls\dev\InfoBar\InfoBarAutomationPeer.cpp, controls\dev\InfoBar\InfoBarPanel.cpp, controls\dev\InfoBar\InfoBarTemplateSettings.cpp, controls\dev\InfoBar\InfoBar_themeresources.xaml, controls\dev\Generated\InfoBar.properties.cpp, controls\dev\Generated\InfoBarPanel.properties.cpp, controls\dev\Generated\InfoBarTemplateSettings.properties.cpp, controls\dev\InfoBar\InteractionTests\InfoBarTests.cs, controls\dev\InfoBar\Strings\en-us\Resources.resw, WinUIGallery\Samples\InfoBar\InfoBarPage.xaml, WinUIGallery\Samples\InfoBar\InfoBarPage.xaml.cs, WinUIGallery\Samples\InfoBar\ClosableInfobarLongShort.txt, WinUIGallery\Samples\InfoBar\ClosableInfobarOptionsChange.txt, WinUIGallery\Samples\InfoBar\ClosableInfobarOptionsDisplay.txt |
ModernWpf.Controls\InfoBar\InfoBar.cs, ModernWpf.Controls\InfoBar\InfoBar.xaml, ModernWpf.Controls\InfoBar\InfoBarAutomationPeer.cs, ModernWpf.Controls\InfoBar\InfoBarPanel.cs, ModernWpf.Controls\InfoBar\InfoBarTemplateSettings.cs, ModernWpf\Resources\Strings.resx, ModernWpf.Gallery\Pages\StatusInfoSampleFactory.cs, test\ModernWpf.WinUI.Tests\InfoBar\InfoBarApiTests.cs, test\ModernWpf.WinUI.Tests\InfoBar\InfoBarSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\infobar-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87; substantive product and converted Gallery inputs remain byte-current after the root move. ModernWpf follows current defaults, exact close/cancel event ordering, null icon-element reset, localized close/icon names, visibility/severity/foreground/content states, close command/chrome, source panel layout with the documented physical-pixel TextBlock bridge, and StatusBar/InfoBar open-only automation membership. All three Gallery examples and every option family are runtime-covered. Exact installed-Gallery 560x95 crops pass a strict 2.0 gate at Light 1.33 and Dark 1.46, now with zero size tolerance; On-to-Off recordings pass at local deltas 4.47 / 8.786. WPF substitutions remain documented for notification events, AccessibilityView, localized landmark metadata, Border/ContentPresenterEx/VisualStateEx, text wrapping, and scoped default button/hyperlink styles. |
| PersonPicture | src\controls\dev\PersonPicture\PersonPicture.cpp, src\controls\dev\PersonPicture\PersonPicture.xaml, src\controls\dev\PersonPicture\PersonPicture.idl, src\controls\dev\PersonPicture\PersonPictureAutomationPeer.cpp, src\controls\dev\PersonPicture\PersonPictureTemplateSettings.h, src\controls\dev\PersonPicture\InitialsGenerator.cpp, src\controls\dev\PersonPicture\PersonPicture_themeresources.xaml, src\controls\dev\PersonPicture\APITests\PersonPictureTests.cs |
ModernWpf.Controls\PersonPicture\PersonPicture.cs, ModernWpf.Controls\PersonPicture\PersonPicture.properties.cs, ModernWpf.Controls\PersonPicture\PersonPicture.xaml, ModernWpf.Controls\PersonPicture\PersonPictureAutomationPeer.cs, ModernWpf.Controls\PersonPicture\PersonPictureTemplateSettings.cs, ModernWpf.Controls\PersonPicture\InitialsGenerator.cs, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\PersonPicture\PersonPictureApiTests.cs, docs\personpicture-winui3-source-audit.md |
Source-backed WPF port | docs\personpicture-winui3-source-audit.md maps the whole control against WinUI 3 source. ModernWpf deleted the old WPF-only PlaceholderIcon / StreamGeometry placeholder path and now uses WinUI's single InitialsTextBlock state-setter model for NoPhotoOrInitials and Group. The default style exposes source chrome through Background, BorderBrush, and BorderThickness, the main ellipse binds to those templated-parent values with a WPF stroke-thickness substitute, and PreferSmallImage now exists with the source default/no-op property-change behavior. Tests cover source defaults, automation names, image/initials/badge priority, visual-state setters, template shape, theme resources, and the removed placeholder path. Exact installed-Gallery 96x96 avatar crops now pass a strict 0.5 gate at Light 0.39 and Dark 0.35. WPF substitutions remain documented for WinRT Contact and async contact photo loading, missing AccessibilityView=Raw, missing TextLineBounds / IsTextScaleFactorEnabled on WPF TextBlock, missing x:DeferLoadStrategy, and WPF BorderThickness to ellipse StrokeThickness typing. |
| SelectorBar | controls\dev\SelectorBar\SelectorBar.cpp, controls\dev\SelectorBar\SelectorBar.h, controls\dev\SelectorBar\SelectorBarItem.cpp, controls\dev\SelectorBar\SelectorBar.xaml, controls\dev\SelectorBar\SelectorBar_perf2026.xaml, controls\dev\SelectorBar\SelectorBar.idl, controls\dev\SelectorBar\SelectorBar_themeresources.xaml, controls\dev\SelectorBar\SelectorBarItemAutomationPeer.cpp, controls\dev\SelectorBar\Strings\en-us\Resources.resw, controls\dev\SelectorBar\APITests\SelectorBarTests.cs, controls\dev\SelectorBar\InteractionTests\SelectorBarTests.cs, controls\dev\ItemsView\ItemsViewAutomationPeer.cpp, controls\dev\ItemContainer\ItemContainerAutomationPeer.cpp |
ModernWpf.Controls\SelectorBar\SelectorBar.cs, ModernWpf.Controls\SelectorBar\SelectorBarItem.cs, ModernWpf.Controls\SelectorBar\SelectorBar.xaml, ModernWpf.Controls\SelectorBar\SelectorBarItemsControl.cs, ModernWpf.Controls\SelectorBar\SelectorBarAutomationPeer.cs, ModernWpf.Controls\SelectorBar\SelectorBarItemAutomationPeer.cs, ModernWpf.Controls\SelectorBar\Strings\Resources.resx, test\ModernWpf.WinUI.Tests\SelectorBar\SelectorBarApiTests.cs, test\ModernWpf.WinUI.Tests\SelectorBar\SelectorBarSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Record-GalleryControlInteractions.ps1, docs\selectorbar-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87; the only post-baseline SelectorBar history is the repository-root move. ModernWpf retains the source-shaped ItemsView/item/state/resource/selection/input contract and exact 284x48 Gallery geometry. The active accessibility tree now matches current WinUI: internal ItemsView is List/Selection, items are ListItem/SelectionItem, the internal List owns selection, and the localized fallback is resource-backed. A Raw-only outer WPF peer preserves harness addressability without duplicating the accessible control. Strict live Light/Dark deltas are 1.99 / 2.58 under 3.0; SelectionItem recordings prove the current first-example state transition. WPF substitutions remain documented for ItemsView/ItemContainer/StackLayout, compositor animation, XY focus, Frame/ItemsView Gallery surfaces, and additional localization packs. |
| BreadcrumbBar | src\controls\dev\Breadcrumb\BreadcrumbBar.cpp, src\controls\dev\Breadcrumb\BreadcrumbBar.xaml, src\controls\dev\Breadcrumb\BreadcrumbBar_themeresources.xaml, src\controls\dev\Breadcrumb\BreadcrumbBarElementFactory.cpp, src\controls\dev\Breadcrumb\BreadcrumbIterable.cpp, src\controls\dev\Breadcrumb\BreadcrumbIterator.cpp, src\controls\dev\Breadcrumb\BreadcrumbLayout.cpp, src\controls\dev\Breadcrumb\BreadcrumbBarItem.cpp, src\controls\dev\Breadcrumb\BreadcrumbBarItemAutomationPeer.cpp, src\dxaml\xcp\core\text\TextBlock\TextBlock.cpp, src\dxaml\xcp\core\inc\EnterParams.h |
ModernWpf.Controls\BreadcrumbBar\BreadcrumbBar.cs, ModernWpf.Controls\BreadcrumbBar\BreadcrumbBarItem.cs, ModernWpf.Controls\BreadcrumbBar\BreadcrumbElementFactory.cs, ModernWpf.Controls\BreadcrumbBar\BreadcrumbIterable.cs, ModernWpf.Controls\BreadcrumbBar\BreadcrumbLayout.cs, ModernWpf.Controls\BreadcrumbBar\BreadcrumbBar.xaml, ModernWpf.Controls\BreadcrumbBar\BreadcrumbBarAutomationPeer.cs, ModernWpf.Controls\BreadcrumbBar\BreadcrumbBarItemAutomationPeer.cs, ModernWpf\Controls\ContentPresenterEx.cs, ModernWpf\ModernWpfControlsResources.xaml, test\ModernWpf.WinUI.Tests\BreadcrumbBar\BreadcrumbBarApiTests.cs, test\ModernWpf.WinUI.Tests\LayoutCompatibility\LayoutCompatibilityApiTests.cs, docs\breadcrumbbar-winui3-source-audit.md |
Source-backed WPF port | docs\breadcrumbbar-winui3-source-audit.md maps the whole control against WinUI 3 source. ModernWpf deleted the guessed PART_RootPanel / manual StackPanel rebuild path and now follows the source ItemsRepeater, leading null ellipsis item, source BreadcrumbLayout, source element factory, item-type visual states, ellipsis dropdown repeater, shifted click index mapping, current XamlAutoFontFamily equivalent, and WinUI TextBlock physical-pixel ceiling semantics. The installed Gallery width vector and 530x26 crop now match exactly; strict Light/Dark deltas are 2.53 / 2.33 under a 3.0 gate. WPF substitutions remain documented for GridEx / ContentPresenterEx chrome, VisualStateEx.Setters, named flyout resource lookup, WPF focus/mouse input, missing AccessibilityView, localized resource strings, and residual glyph antialiasing. |
| ToggleSwitch | dxaml\xcp\dxaml\lib\ToggleSwitch_Partial.cpp, dxaml\xcp\dxaml\lib\ToggleSwitch_Partial.h, dxaml\xcp\dxaml\lib\ToggleSwitchAutomationPeer_Partial.cpp, dxaml\xcp\components\controls\KeyDownUp\inc\ToggleSwitchKeyProcess.h, dxaml\xcp\components\controls\KeyDownUp\unittests\toggleswitch\ToggleSwitchUnitTests.cpp, dxaml\xcp\tools\XCPTypesAutoGen\XamlOM\Model\Microsoft.UI.Xaml.Controls.cs, dxaml\xcp\tools\XCPTypesAutoGen\XamlOM\Model\Microsoft.UI.Xaml.Controls.Primitives.cs, controls\dev\CommonStyles\ToggleSwitch_themeresources.xaml, controls\dev\CommonStyles\ToggleSwitch_themeresources_perf2026.xaml, dxaml\test\native\external\controls\toggleswitch\ToggleSwitchIntegrationTests.cpp, dxaml\test\native\external\controls\toggleswitch\ToggleSwitchAutomationIntegrationTests.cpp, controls\test\MUXControlsTestApp\verification\ToggleSwitch.xml, WinUIGallery\Samples\ToggleSwitch\ToggleSwitchPage.xaml, WinUIGallery\Samples\ToggleSwitch\ToggleSwitchPage.xaml.cs, WinUIGallery\Samples\ToggleSwitch\ToggleSwitchSimple.txt, WinUIGallery\Samples\ToggleSwitch\ToggleSwitchCustom.txt, tests\WinUIGallery.UITests\Tests\ToggleSwitch.cs |
ModernWpf.Controls\ControlHeaderPlacement.cs, ModernWpf.Controls\ToggleSwitch\ToggleSwitch.cs, ModernWpf.Controls\ToggleSwitch\ToggleSwitch.xaml, ModernWpf.Controls\ToggleSwitch\ToggleSwitchTemplateSettings.cs, ModernWpf.Controls\ToggleSwitch\ToggleSwitchAutomationPeer.cs, ModernWpf.Controls\ToggleSwitch\Strings\Resources.resx, ModernWpf.Gallery\Pages\BasicInputSampleFactory.cs, ModernWpf\ModernWpfControlsResources.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\ToggleSwitch\ToggleSwitchApiTests.cs, test\ModernWpf.WinUI.Tests\ToggleSwitch\ToggleSwitchSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\toggleswitch-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. Runtime, peer, key, XamlOM, classic theme, and native-test sources remain byte-current; the new perf2026 dictionary is an equivalent setter-based variant already represented by VisualStateEx.Setters. The WPF port carries source template lifecycle, tap/drag/manipulation/translations, key sequencing, common/focus/content/toggle/drag/header states, listener-first automation events, Toggle-only Button peer, current theme resources, and the current Gallery simple/custom examples with ProgressRing reaction. The explicit 72-DIP width/zero-MinWidth and centered-content settings are measured WPF platform-default adapters. Fresh installed-Gallery proof passes exact resting 72x40 crops at Light 0.92 and Dark 1.06 under 1.5, plus exact On-state 92x60 crops at 0.53 / 0.48; primary size tolerance is zero. Product/source tests pass 55/55, Gallery tests pass 2/2 on net8 and net10, and net462 builds warning-free. Documented substitutions cover GamepadA, element sounds, native touch arbitration, compositor/RepositionThemeAnimation, WPF Border/Grid chrome, cloned Freezables, AccessibilityView, and WinRT automation internals. |
| NavigationView | controls\dev\NavigationView\NavigationView.cpp, controls\dev\NavigationView\NavigationView.h, controls\dev\NavigationView\NavigationView.idl, controls\dev\NavigationView\NavigationView.xaml, controls\dev\NavigationView\NavigationView_themeresources.xaml, controls\dev\NavigationView\NavigationBackButton.xaml, controls\dev\NavigationView\NavigationViewAutomationPeer.cpp, controls\dev\NavigationView\NavigationViewItem*.cpp, controls\dev\NavigationView\TopNavigationViewDataProvider.cpp, controls\dev\NavigationView\NavigationViewItemsFactory.cpp, controls\dev\NavigationView\NavigationViewTemplateSettings.cpp, controls\dev\NavigationView\NavigationView_ApiTests\NavigationViewTests.cs, controls\dev\NavigationView\NavigationView_InteractionTests\*.cs, WinUIGallery\Samples\NavigationView\* |
ModernWpf.Controls\NavigationView\*, ModernWpf.Controls\SplitView\SplitView.cs, ModernWpf\Styles\NavigationView.xaml, ModernWpf\Styles\NavigationBackButton.xaml, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, ModernWpf.Gallery\Pages\NavigationSampleFactory.cs, test\ModernWpf.WinUI.Tests\NavigationView\NavigationViewApiTests.cs, test\ModernWpf.WinUI.Tests\NavigationView\NavigationViewSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Record-GalleryControlInteractions.ps1, docs\navigationview-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. ModernWpf retains source-shaped pane/display-mode, menu/footer, selection, top-navigation, hierarchy, template-settings, automation, back-button, resources, and depth-16 shadow behavior. It now also ports the current non-negative pane MaxHeight conditions and the deferred child-flyout stale-state guard, each with a runtime regression. All eight current Gallery examples/options/snippets are pinned. Exact 745x460 installed-Gallery crops pass a strict 1.2 gate at Light 1.03 and Dark 0.93; selection recordings pass in both themes. NavigationView tests pass 54/54, SplitView 14/14, Gallery coverage 7/7 on net8/net10, and Gallery builds on net462/net8/net10. Remaining WPF substitutions for acrylic/composition, popup/XamlRoot, focus/gamepad/access keys, top-overflow measurement, glyph antialiasing, x:Bind, and recycle metadata are documented. |
| FlyoutBase / Flyout / MenuFlyout | dxaml\xcp\dxaml\lib\FlyoutBase_partial.cpp, dxaml\xcp\dxaml\lib\FlyoutBase_partial.h, dxaml\xcp\dxaml\lib\Flyout_partial.cpp, dxaml\xcp\dxaml\lib\FlyoutPresenter_partial.cpp, dxaml\xcp\dxaml\lib\MenuFlyout_Partial.cpp, dxaml\xcp\dxaml\lib\winrtgeneratedclasses\FlyoutBaseClosingEventArgs.g.cpp, dxaml\xcp\dxaml\lib\winrtgeneratedclasses\FlyoutShowOptions.g.cpp, dxaml\xcp\tools\XCPTypesAutoGen\XamlOM\Model\Microsoft.UI.Xaml.Controls.Primitives.cs, controls\dev\CommonStyles\FlyoutPresenter_themeresources.xaml, WinUIGallery\Samples\Flyout\* |
ModernWpf.Controls\Flyout\*, ModernWpf.Controls\MenuFlyout\*, ModernWpf\Controls\Primitives\PopupEx.cs, ModernWpf\Controls\Primitives\CustomPopupPlacementHelper.cs, ModernWpf.Gallery\Pages\DialogsFlyoutsSampleFactory.cs, test\ModernWpf.WinUI.Tests\Flyout\*, test\ModernWpf.WinUI.Tests\MenuFlyout\*, test\ModernWpf.Gallery.Tests\FlyoutSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, tools\visual-checks\Record-GalleryControlInteractions.ps1, docs\flyoutbase-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. Post-baseline product history is bounded to root move 8463f45162149de0ec3ad7df752596893fe3e13e and current placement fix 2db27f71f857363d6a9a4485e01c8b8fdbe02499, already ported to bottom-align overflowing side flyouts within the monitor work area; the one-example Gallery is unchanged after conversion 14a4a1a2b8ddc527dc4a7d5f7e743d7c2bc97db7. ModernWpf retains source-shaped read-only Target and constraint state, cancelable Closing, current/staged flyout sequencing, placement-target unload closure, cloned show options, null-target positioned opens, exclusion-rect avoidance, placement fallback ordering, transient show modes, presenter metrics, roles/providers, and confirmation-close behavior. Fresh fully live Light artifacts/visual-checks/20260718-233022-683-69796/report.md and Dark artifacts/visual-checks/20260718-233125-103-42428/report.md pass exact 90x32 trigger crops at 2.63 / 2.21 and 366x96 versus 366x97 open crops at 10.07 / 3.72. Light/Dark OpenRepeat recordings artifacts/gallery-recordings/20260718-233216-705/report.md and artifacts/gallery-recordings/20260718-233313-024/report.md prove repeated open/confirmation-close behavior. Product tests pass 24/24; focused Gallery sample/source/gate/popup-HWND tests pass 6/6 on net8/net10; builds pass net462/net8/net10 with zero errors. Documented WPF substitutions cover popup-window root constraints, cancellation restoration, positioned placement rectangles, screen-bound pointer tracking, top-level staging, and absent per-XamlRoot/child-flyout/native-composition metadata. |
| Popup (Gallery sample) | WinUIGallery\Samples\Popup\PopupPage.xaml, WinUIGallery\Samples\Popup\PopupPage.xaml.cs, WinUIGallery\Samples\Popup\PopupOffsetPositioning.txt |
ModernWpf.Gallery\Pages\DialogsFlyoutsSampleFactory.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\PopupSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, tools\visual-checks\Record-GalleryControlInteractions.ps1, docs\popup-winui-gallery-source-audit.md |
Source-backed WPF platform adapter | Refreshed against official Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87; page/code/snippet blobs 6a5d35d9acf43067bb7cb9317e2d1ad863dbade2, ea3a3be6beecbaecb15f9a9612767d0e74c9b992, and 711eea6ce1ead50ef91bcf5eba7c011ddf892af9 remain unchanged after conversion 14a4a1a2b8ddc527dc4a7d5f7e743d7c2bc97db7. The live adapter preserves the one-example offset surface, NumberBox ranges/steps/values, inverse WPF StaysOpen mapping, option disable/restore lifecycle, explicit Close, source Border/spacing/resources, Text/Button roles, and Invoke. A measured 22-DIP WPF heading minimum bridges the one-DIP platform line-box difference and yields exact 240x96 surface geometry. Fresh Light artifacts/visual-checks/20260718-234231-942-70740/report.md passes exact 189x32 / 240x96 crops at 3.33 / 2.63; Dark artifacts/visual-checks/20260718-234257-459-77704/report.md passes at 3.13 / 2.66. Light/Dark OpenRepeat recordings artifacts/gallery-recordings/20260718-234329-029/report.md and artifacts/gallery-recordings/20260718-234435-353/report.md pass. Focused Gallery coverage passes 3/3 on net8/net10; PowerShell parsers and Gallery builds on net462/net8/net10 pass. WPF's separate transparent popup HWND is the documented platform substitution for WinUI's in-window Popup. |
| RadioMenuFlyoutItem | controls\dev\RadioMenuFlyoutItem\RadioMenuFlyoutItem.cpp, header/IDL/generated inputs, classic/perf2026 templates, interaction/TestUI sources, inherited MenuFlyoutItem/ToggleMenuFlyoutItem automation peers, and current WinUIGallery\Samples\MenuFlyout radio consumer |
ModernWpf.Controls\RadioMenuItem\RadioMenuItem.cs, generated properties, RadioMenuItem.xaml, product source/API/interaction tests, ModernWpf.Gallery\Pages\MenusToolbarsSampleFactory.cs, Gallery consumer/source/gate tests, docs\radiomenuflyoutitem-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. Runtime/API/classic theme/interaction/TestUI and inherited peer blobs remain byte-current; perf2026 only converts two narrow-padding assignments to equivalent setters and the root move is nonfunctional. ModernWpf retains source weak group selection, guarded uncheck, load/unload lifetime, submenu check mirroring, 12-DIP mark, icon/accelerator states, current resources, and the Gallery groups/defaults. MenuItem role/name plus Toggle states and guarded re-toggle are regression-covered. Product/source tests pass 9/9 and Gallery tests 3/3 on net8/net10. Shared MenuFlyout captures are presenter/chrome evidence rather than isolated radio pixel proof. WPF substitutions remain documented for MenuItem/public identity, dispatcher-owned process map, popup/WinRT peer plumbing, geometry font fallback, and input-device narrow state. |
| ContentDialog | dxaml\xcp\dxaml\lib\ContentDialog_Partial.cpp, dxaml\xcp\dxaml\lib\ContentDialog_Partial.h, dxaml\xcp\dxaml\lib\ContentDialogMetadata.cpp, dxaml\xcp\tools\XCPTypesAutoGen\XamlOM\Model\Microsoft.UI.Xaml.Controls.cs, controls\dev\CommonStyles\ContentDialog_themeresources.xaml, dxaml\test\native\external\controls\contentdialog\ContentDialogIntegrationTests.cpp, dxaml\test\native\external\controls\contentdialog\ContentDialogAutomationIntegrationTests.cpp, WinUIGallery\Samples\ContentDialog\* |
ModernWpf.Controls\ContentDialog\ContentDialog.cs, ModernWpf.Controls\ContentDialog\ContentDialog.xaml, ModernWpf.Controls\ContentDialog\ContentDialogAutomationPeer.cs, ModernWpf.Gallery\Pages\DialogsFlyoutsSampleFactory.cs, test\ModernWpf.WinUI.Tests\ContentDialog\ContentDialogApiTests.cs, test\ModernWpf.WinUI.Tests\ContentDialog\ContentDialogSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, tools\visual-checks\Record-GalleryControlInteractions.ps1, docs\contentdialog-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87; root move 8463f45162149de0ec3ad7df752596893fe3e13e is the only product history hit and the converted two-example Gallery remains unchanged. ModernWpf retains the source API, template/states, result/deferral/default-button/keyboard flow, depth-128 shadow, font metrics, and modal Window-pattern peer. Strict proof requires exact 101x32 closed geometry under 4.0 and the six-element surface under 7.0 with a two-pixel aggregate size allowance: Light 3.59 / 6.59, Dark 2.62 / 6.15. OpenRepeat recordings prove Cancel close and reopen in both themes. Product/source tests pass 18/18 and Gallery tests 2/2 on net8/net10. XamlRoot/SIP/native composition, gamepad/access-key paths, and XamlUICommand binding remain documented WPF substitutions. |
| DropDownButton | controls\dev\DropDownButton\DropDownButton.cpp, headers/IDL/generated inputs, classic/perf2026 templates, theme resources, automation peer, interaction/TestUI tests, and current WinUIGallery DropDownButton page/definitions/image |
ModernWpf.Controls\DropDownButton\DropDownButton.cs, ModernWpf.Controls\DropDownButton\DropDownButton.xaml, ModernWpf.Controls\DropDownButton\DropDownButtonAutomationPeer.cs, theme resources, ModernWpf.Gallery\Pages\BasicInputSampleFactory.cs, product/Gallery source tests, visual checker/recorder, docs\dropdownbutton-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. Bounded product history contains only root move 8463f45162149de0ec3ad7df752596893fe3e13e; perf2026 converts equivalent state assignments to setters already used locally. ModernWpf retains current-flyout rebinding, replacement-flyout isolation, Button plus ExpandCollapse automation/state notifications, the source 12x12 chevron, state/theme/chrome resources, exact 96-DPI elevation endpoints, and both current Email examples including placement, menu items, glyphs, and accessible name. Fresh exact 78x32 comparisons pass Light 3.68 / Dark 2.69 under 4.0; both OpenRepeat recordings pass. Product/source tests pass 10/10 and Gallery tests 3/3 on net8/net10. WPF substitutions remain documented for GridEx/ContentPresenterEx, FontIconFallback, VisualStateEx, Raw accessibility, Popup HWND hosting, and display-pipeline antialiasing. |
| NumberBox | controls\dev\Generated\NumberBox.properties.cpp, controls\dev\Generated\NumberBox.properties.h, controls\dev\Generated\NumberBoxAutomationPeer.properties.cpp, controls\dev\NumberBox\NumberBox.cpp, controls\dev\NumberBox\NumberBox.h, controls\dev\NumberBox\NumberBox.idl, controls\dev\NumberBox\NumberBox.xaml, controls\dev\NumberBox\NumberBox_perf2026.xaml, controls\dev\NumberBox\NumberBox_themeresources.xaml, controls\dev\NumberBox\NumberBoxAutomationPeer.cpp, controls\dev\NumberBox\NumberBoxParser.cpp, controls\dev\NumberBox\APITests\NumberBoxTests.cs, controls\dev\NumberBox\InteractionTests\NumberBoxTests.cs, controls\dev\NumberBox\Strings\en-us\Resources.resw, WinUIGallery\Samples\NumberBox\NumberBoxPage.xaml, WinUIGallery\Samples\NumberBox\NumberBoxPage.xaml.cs, WinUIGallery\Samples\NumberBox\NumberboxEvaluatesExpressions.txt, WinUIGallery\Samples\NumberBox\NumberboxSpinButton.txt, WinUIGallery\Samples\NumberBox\FormattedNumberboxRoundsNearest.txt |
ModernWpf.Controls\NumberBox\NumberBox.cs, ModernWpf.Controls\NumberBox\NumberBox.properties.g.cs, ModernWpf.Controls\NumberBox\DefaultNumberRounder.cs, ModernWpf.Controls\NumberBox\NumberBox.xaml, ModernWpf.Controls\NumberBox\NumberBoxAutomationPeer.cs, ModernWpf.Controls\NumberBox\NumberBoxParser.cs, ModernWpf.Gallery\Pages\TextSampleFactory.cs, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\NumberBox\NumberBoxApiTests.cs, test\ModernWpf.WinUI.Tests\NumberBox\NumberBoxInteractionTests.cs, test\ModernWpf.WinUI.Tests\NumberBox\NumberBoxSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\numberbox-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. All audited product blobs remain byte-current after the root move except the native whitespace table becoming function-local to remove a DLL initializer; WPF String.Trim is already behaviorally equivalent. The perf2026 XAML only replaces discrete assignment animations with setters. ModernWpf follows source template unhook/re-registration, popup helper, significant-digit formatting, NaN guard, expression parsing/validation, key/wheel/step/wrap paths, UIA Name/LabeledBy forwarding, source-owned placement/enabled states, part tree/glyphs/resources, and RangeValue Spinner peer. The current three-example Gallery page, options, quarter formatter, names, accessible name, and source snippets are pinned. Exact resting 132x59 crops pass Light 1.84 / Dark 1.74 under 2.5; exact value-changed 152x79 crops pass 1.69 / 1.02 under 2.0, with zero size tolerance for both. Product/source tests pass 18/18, Gallery tests pass 2/2 on net8/net10, and net462 builds warning-free. WPF substitutions remain documented for popup/shadow/root-bounds hosting, TextBox PART_ContentHost and trigger/perf-setter differences, popup focus, resource scope, non-FE ColumnDefinition setters, WinRT formatting, and High Contrast resource ownership. |
| HyperlinkButton | current-root dxaml\xcp\dxaml\lib\HyperLinkButton_Partial.*, HyperlinkButtonAutomationPeer_Partial.*, generated API, XamlOM, classic/perf2026 theme resources, native integration tests, and current WinUI Gallery page/code/two snippets |
ModernWpf.Controls\HyperlinkButton\HyperlinkButton.cs, HyperlinkButton.xaml, HyperlinkButtonAutomationPeer.cs, ModernWpf.Gallery\Pages\BasicInputSampleFactory.cs, current snippet copies, product/Gallery source/API/sample/gate tests, visual checker, docs\hyperlinkbutton-winui3-source-audit.md |
Source-backed WPF port | Refreshed against current official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. Runtime/API/XamlOM/peer/classic-theme/native-test blobs remain byte-identical to baseline c70471c511a0168b61dcca13af9556465f26b673; perf2026 only converts nine zero-duration assignments to equivalent setters and the root move is nonfunctional. ModernWpf retains source NavigateUri/no TargetName, click ordering, desktop launch substitute, Hyperlink/Invoke semantics and disabled rejection, ButtonPadding, current state/theme resources, and both current Gallery examples. Exact 157x32 crops pass Light 1.48 / Dark 1.47 under 1.6; product/source tests pass 5/5 and Gallery tests 3/3 on net8/net10. WPF substitutions remain documented for desktop launcher, Raw annotation, native underline/backplate text, x:Bind, and VisualStateEx.Setters. |
| IconSource / ImageIcon | dxaml\xcp\dxaml\lib\IconSource_Partial.cpp, dxaml\xcp\dxaml\lib\BitmapIconSource_Partial.cpp, dxaml\xcp\dxaml\lib\FontIconSource_Partial.cpp, dxaml\xcp\dxaml\lib\PathIconSource_Partial.cpp, dxaml\xcp\dxaml\lib\SymbolIconSource_Partial.cpp, controls\dev\IconSource\ImageIconSource.cpp, controls\dev\IconSource\IconSource.idl, controls\dev\ImageIcon\ImageIcon.cpp, controls\dev\ImageIcon\ImageIcon.xaml, controls\dev\IconSource\APITests\IconSourceApiTests.cs, controls\dev\ImageIcon\APITests\ImageIconTests.cs, controls\dev\DllHost\SharedHelpers.cpp |
ModernWpf\IconSource\IconSource.cs, ModernWpf\IconSource\BitmapIconSource.cs, ModernWpf\IconSource\FontIconSource.cs, ModernWpf\IconSource\PathIconSource.cs, ModernWpf\IconSource\SymbolIconSource.cs, ModernWpf\IconSource\ImageIconSource.cs, ModernWpf\IconElement\FontIcon.cs, ModernWpf\IconElement\ImageIcon.cs, ModernWpf.Controls\Common\SharedHelpers.cs, test\ModernWpf.WinUI.Tests\IconSource\IconSourceApiTests.cs, test\ModernWpf.WinUI.Tests\IconSource\IconSourceSourceAuditTests.cs, docs\iconsource-imageicon-winui3-source-audit.md |
Source-backed WPF port | Refreshed against current official commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. ModernWpf follows current direct-Image ImageIcon shape, base Foreground application, weak live-element updates, concrete property mapping, and all WPF-feasible shared-helper conversions including ImageIconSource. The integrated Gallery bitmap ImageIcon now has its own exact 100x89 Light/Dark crop under a strict 2.0/zero-size-tolerance gate, passing at 1.49 / 1.17. WPF substitutions remain for generated metadata, OS text scaling, RTL transforms, AnimatedIconSource exclusion, and SVG DrawingImage adaptation. |
| IconElement family | dxaml\xcp\core\core\elements\icon.cpp, dxaml\xcp\core\inc\icon.h, dxaml\xcp\dxaml\lib\SymbolIcon_Partial.cpp, XamlOM/generated IconElement/FontIcon/SymbolIcon/PathIcon/BitmapIcon inputs, native integration suites, and WinUIGallery\Samples\IconElement\* |
ModernWpf\IconElement\IconElement.cs, ModernWpf\IconElement\FontIcon.cs, ModernWpf\IconElement\SymbolIcon.cs, ModernWpf\IconElement\PathIcon.cs, ModernWpf\IconElement\BitmapIcon.cs, ModernWpf\IconSource\FontIconSource.cs, ModernWpf.Gallery\Pages\StylesSampleFactory.cs, product/Gallery source tests, visual checker/recorder, docs\iconelement-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. ModernWpf now matches all 197 current Symbol glyph remaps, Fluent-first font fallback, inherited FontStyle/FontWeight, owner-level retained RTL mirroring, default Path stretch, string conversion, and peerless accessibility boundary. BitmapIcon preserves URI/foreground/monochrome behavior through a documented WPF Image/opacity-mask substitute; the private Grid layout host substitutes for current WinUI's opt-in direct child without affecting public pixels. Exact 50x51 Light/Dark crops pass at 0.02 under 0.1; monochrome recordings pass, AppBarButton cross-control checks pass, product/source tests are 23/23, and Gallery tests are 4/4 on net8/net10. |
| MenuBar | controls\dev\MenuBar\MenuBar.cpp, controls\dev\MenuBar\MenuBar.h, controls\dev\MenuBar\MenuBar.xaml, controls\dev\MenuBar\MenuBar_themeresources.xaml, controls\dev\MenuBar\MenuBarItem.cpp, controls\dev\MenuBar\MenuBarItem.h, controls\dev\MenuBar\MenuBarItem.xaml, controls\dev\MenuBar\MenuBarItemFlyout.cpp, controls\dev\MenuBar\MenuBarAutomationPeer.cpp, controls\dev\MenuBar\MenuBarItemAutomationPeer.cpp, controls\dev\MenuBar\MenuBar_InteractionTests\MenuBarTests.cs, WinUIGallery\Samples\MenuBar\* |
ModernWpf.Controls\MenuBar\*, ModernWpf.Controls\MenuFlyout\MenuFlyout.cs, ModernWpf.Gallery\Pages\MenusToolbarsSampleFactory.cs, test\ModernWpf.WinUI.Tests\MenuBar\MenuBarApiTests.cs, test\ModernWpf.Gallery.Tests\MenuBarSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, tools\visual-checks\Record-GalleryControlInteractions.ps1, docs\menubar-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. Ten runtime/template/peer/theme blobs remain byte-current; later history only packages perf resources and performs root move 8463f45162149de0ec3ad7df752596893fe3e13e. ModernWpf retains the source control/item collections, flyout mirroring, parent open state, pointer/key/access-key paths, states, MenuBar/MenuItem roles, and Invoke/ExpandCollapse. The current three-example Gallery's live labels, historical snippet ellipses, accelerators, submenus, separators, radio groups, outputs, and accessibility are pinned. This pass adds the missing WinUI leaf-invocation dismissal and scopes WPF system-menu typography/content inset plus asymmetric device-rounding padding to MenuBarItemFlyout, restoring exact four-row geometry without disturbing the separately locked MenuFlyout. Fresh Light artifacts/visual-checks/20260719-000953-705-5868/report.md passes exact 158x40 / 96x134 versus 98x134 crops at 2.63 / 8.61; Dark artifacts/visual-checks/20260719-001049-872-102252/report.md passes at 2.57 / 6.74. OpenRepeat recordings artifacts/gallery-recordings/20260719-003628-180/report.md and artifacts/gallery-recordings/20260719-003722-561/report.md prove Exit dismissal and reopen. Product tests pass 12/12; focused Gallery coverage passes 4/4 on net8/net10; builds pass net462/net8/net10 with zero errors. WPF substitutions for popup HWND/pass-through, XYFocus/gamepad/access-key display mode, Raw accessibility, stock MenuItem acceptance, and renderer-specific font/rounding remain documented. |
| ProgressBar | controls\dev\ProgressBar\ProgressBar.cpp, controls\dev\ProgressBar\ProgressBar.h, controls\dev\ProgressBar\ProgressBar.idl, controls\dev\ProgressBar\ProgressBar.xaml, controls\dev\ProgressBar\ProgressBar_themeresources.xaml, controls\dev\ProgressBar\ProgressBarAutomationPeer.cpp, controls\dev\ProgressBar\ProgressBarTemplateSettings.cpp, controls\dev\Generated\ProgressBar.properties.cpp, controls\dev\ProgressBar\APITests\ProgressBarTests.cs, controls\dev\ProgressBar\InteractionTests\ProgressBarTests.cs, WinUIGallery\Samples\ProgressBar\ProgressBarPage.xaml, WinUIGallery\Samples\ProgressBar\ProgressBarPage.xaml.cs, WinUIGallery\Samples\ProgressBar\DeterminateProgressBar.txt, WinUIGallery\Samples\ProgressBar\IndeterminateProgressBar.txt |
ModernWpf\ProgressBar\ProgressBar.cs, ModernWpf\ProgressBar\ProgressBar.xaml, ModernWpf\ProgressBar\ProgressBarAutomationPeer.cs, ModernWpf\ProgressBar\ProgressBarTemplateSettings.cs, ModernWpf\Controls\Primitives\ProgressBarIndicatorRasterOverlay.cs, ModernWpf.Gallery\Pages\StatusInfoSampleFactory.cs, test\ModernWpf.WinUI.Tests\ProgressBar\ProgressBarApiTests.cs, test\ModernWpf.WinUI.Tests\ProgressBar\ProgressBarInteractionTests.cs, test\ModernWpf.WinUI.Tests\ProgressBar\ProgressBarSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\progressbar-winui3-source-audit.md, docs\stock-progressbar-wpf-fluent-source-audit.md |
Source-backed WPF port | Refreshed against current official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. The custom control retains source property/state/width/template/automation behavior and the current two-example Gallery surface on a distinct WinUIProgressBar route; the stock WPF ProgressBar route remains separately owned. A DPI-aware, two-pixel-cap-inset upper scanline compensates only WPF's three-pixel rounded-edge rasterization and follows live Fill/width/opacity/transform. Strict exact 130x3 installed-Gallery crops pass Light/Dark at 0.43 under a 2.0 gate with zero size tolerance. WPF substitutions remain documented for callbacks, DPI rounding, early clip clamping, the unused Normal state, storyboards/transforms, track resource lookup, and the focused raster adapter. |
| ProgressRing | controls\dev\ProgressRing\ProgressRing.cpp, controls\dev\ProgressRing\ProgressRing.h, controls\dev\ProgressRing\ProgressRing.xaml, controls\dev\ProgressRing\ProgressRing.idl, controls\dev\ProgressRing\ProgressRingAutomationPeer.cpp, controls\dev\ProgressRing\AnimatedVisuals\ProgressRingDeterminate.cpp, controls\dev\ProgressRing\AnimatedVisuals\ProgressRingIndeterminate.cpp, controls\dev\ProgressRing\ProgressRing_themeresources.xaml, controls\dev\Generated\ProgressRing.properties.cpp, controls\dev\Generated\ProgressRingTemplateSettings.properties.cpp, controls\dev\ProgressRing\APITests\ProgressRingTests.cs, controls\dev\ProgressRing\InteractionTests\ProgressRingTests.cs, WinUIGallery\Samples\ProgressRing\ProgressRingPage.xaml, WinUIGallery\Samples\ProgressRing\ProgressRingPage.xaml.cs, WinUIGallery\Samples\ProgressRing\DeterminateProgressRing.txt, WinUIGallery\Samples\ProgressRing\IndeterminateProgressRing.txt |
ModernWpf.Controls\ProgressRing\ProgressRing.cs, ModernWpf.Controls\ProgressRing\ProgressRing.xaml, ModernWpf.Controls\ProgressRing\ProgressRingAutomationPeer.cs, ModernWpf.Controls\ProgressRing\ProgressRingIndicator.cs, ModernWpf.Controls\ProgressRing\ProgressRingTemplateSettings.cs, ModernWpf.Gallery\Pages\StatusInfoSampleFactory.cs, ModernWpf.Gallery\Testing\GalleryDiagnostics.cs, test\ModernWpf.WinUI.Tests\ProgressRing\ProgressRingApiTests.cs, test\ModernWpf.WinUI.Tests\ProgressRing\ProgressRingInteractionTests.cs, test\ModernWpf.WinUI.Tests\ProgressRing\ProgressRingSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\progressring-winui3-source-audit.md |
Source-backed WPF port | Refreshed against current official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87; all substantive product blobs remain byte-current. The WPF arc derives radius/stroke from the generated 32x32 Lottie geometry (8px ellipse, 1.5px stroke, 1.77 scale), while current states, range behavior, theme resources, and ProgressBar/RangeValue accessibility stay pinned. Current two-example Gallery behavior/snippets match through a documented host-Border background substitute. Deterministic 65% determinate comparisons require exact 60x60 size, a 1.0 delta gate, and zero size tolerance; Light passes 0.64, Dark 0.63. WPF substitutions remain documented for AnimatedVisualPlayer, custom animated sources, brush callbacks, and AccessibilityView. |
| SplitButton / ToggleSplitButton | controls\dev\SplitButton\SplitButton.cpp, controls\dev\SplitButton\SplitButton.h, controls\dev\SplitButton\SplitButton.idl, controls\dev\SplitButton\SplitButton.xaml, controls\dev\SplitButton\SplitButton_themeresources.xaml, controls\dev\SplitButton\SplitButtonAutomationPeer.cpp, controls\dev\SplitButton\ToggleSplitButton.cpp, controls\dev\SplitButton\ToggleSplitButtonAutomationPeer.cpp, controls\dev\Generated\SplitButton.properties.cpp, controls\dev\Generated\ToggleSplitButton.properties.cpp, controls\dev\SplitButton\APITests\SplitButtonTests.cs, controls\dev\SplitButton\InteractionTests\SplitButtonTests.cs, WinUIGallery\Samples\SplitButton\SplitButtonPage.xaml, WinUIGallery\Samples\SplitButton\SplitButtonPage.xaml.cs, WinUIGallery\Samples\SplitButton\SplitButtonColorPicker.txt, WinUIGallery\Samples\SplitButton\SplitButtonText.txt, WinUIGallery\Samples\ToggleSplitButton\ToggleSplitButtonPage.xaml, WinUIGallery\Samples\ToggleSplitButton\ToggleSplitButtonPage.xaml.cs, WinUIGallery\Samples\ToggleSplitButton\ToggleSplitButtonBulletList.txt |
ModernWpf.Controls\SplitButton\SplitButton.cs, ModernWpf.Controls\SplitButton\ToggleSplitButton.cs, ModernWpf.Controls\SplitButton\SplitButton.xaml, ModernWpf.Controls\SplitButton\SplitButtonAutomationPeer.cs, ModernWpf.Controls\SplitButton\ToggleSplitButtonAutomationPeer.cs, ModernWpf.Controls\CommandBar\CommandBar.xaml, ModernWpf.Gallery\Pages\BasicInputSampleFactory.cs, ModernWpf\ThemeResources\Light.xaml, ModernWpf\ThemeResources\Dark.xaml, ModernWpf\ThemeResources\HighContrast.xaml, test\ModernWpf.WinUI.Tests\SplitButton\SplitButtonApiTests.cs, test\ModernWpf.WinUI.Tests\SplitButton\SplitButtonInteractionTests.cs, test\ModernWpf.WinUI.Tests\SplitButton\SplitButtonSourceAuditTests.cs, test\ModernWpf.Gallery.Tests\GalleryAutomationHookTests.cs, test\ModernWpf.Gallery.Tests\WpfGallerySourceShapeTests.cs, tools\visual-checks\Run-GalleryVisualChecks.ps1, docs\splitbutton-winui3-source-audit.md |
Source-backed WPF port | Refreshed against current product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87; every substantive product blob remains byte-current. ModernWpf follows source flyout revokers/show options, keyboard/command/toggle ordering, touch/key and checked states, split-border resources/geometry, and SplitButton Invoke versus ToggleSplitButton Toggle accessibility. The current two-plus-one Gallery surface is pinned, including WPF's native RichTextBox list model and correct unchecked list removal. Fresh exact 71x32 SplitButton crops pass Light 0.46 / Dark 0.37 under 1.0; exact 78x33 ToggleSplitButton crops pass Light 1.62 / Dark 0.98 under 2.0; both enforce zero size tolerance and independently prove their secondary flyouts. WPF substitutions remain documented for GridEx, animated-icon fallback, AccessibilityView, GamepadA, CommandTarget, RichTextBox, Grid spacing, and flyout item layout. |
| CommandBar | src\dxaml\xcp\dxaml\lib\CommandBar_Partial.cpp, src\dxaml\xcp\dxaml\lib\CommandBar_Partial.h, src\dxaml\xcp\dxaml\lib\CommandBarOverflowPresenter_Partial.cpp, src\dxaml\xcp\tools\XCPTypesAutoGen\Modules\Controls\CommandBar.cs, src\controls\dev\CommonStyles\CommandBar_themeresources.xaml, src\dxaml\test\native\external\controls\commandbar\CommandBarIntegrationTests.cpp, inherited AppBar generated/runtime/automation-peer inputs, current Gallery CommandBar page/code/snippet |
ModernWpf.Controls\CommandBar\CommandBar.cs, ModernWpf.Controls\CommandBar\CommandBar.xaml, ModernWpf.Controls\CommandBar\CommandBarDynamicOverflow.cs, ModernWpf.Controls\CommandBar\CommandBarAutomationPeer.cs, ModernWpf.Controls\CommandBar\CommandBarTemplateSettings.cs, ModernWpf.Controls\CommandBar\CommandBarOverflowPanel.cs, ModernWpf.Controls\CommandBar\CommandBarOverflowPresenter.cs, ModernWpf.Controls\CommandBar\AppBarElementProperties.cs, ModernWpf.Gallery\Pages\MenusToolbarsSampleFactory.cs, test\ModernWpf.WinUI.Tests\CommandBar\CommandBarApiTests.cs, test\ModernWpf.Gallery.Tests\CommandBarSourceAuditTests.cs, visual checker/recorder, docs\commandbar-winui3-source-audit.md |
Source-backed WPF port | Refreshed against current official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87; classic and perf2026 dictionaries are byte-identical and later bounded runtime history is nonfunctional cleanup. ModernWpf retains source-shaped collections, template settings, visual states, sticky/light-dismiss behavior, grouped dynamic overflow, shadow wrapper, and input-mode routing, and now adds current DynamicOverflowItemsChanging timing/actions, inherited Opening/Opened/Closing/Closed lifecycle plus virtual hooks, and AppBar-compatible Toggle/ExpandCollapse/Window automation patterns and notifications. The Gallery mirrors the unchanged one-example page, snippet, accelerators, output, and dynamic commands. Exact 271x48 resting and 167x32 Settings crops pass Light 1.70 / 2.16 and Dark 2.08 / 2.37 under one 2.5 gate with zero size tolerance; Light/Dark OpenRepeat recordings prove repeated opens. Product tests pass 43/43, focused Gallery tests pass 3/3 on net8/net10, and multi-target builds have zero errors. WPF substitutions remain documented for missing WinUI AppBar base types/role ID, generated command collection APIs, compositor shadow, popup ActualPlacement, and gamepad/remote input services. |
| CommandBarFlyout | Current runtime/IDL/generated/API/interaction/localization inputs under controls\dev\CommandBarFlyout, classic/perf2026 theme dictionaries, AppBar automation peers, commanding integration tests, and current Gallery page/code/displayed/sample snippets |
ModernWpf.Controls\CommandBarFlyout\CommandBarFlyout.cs, ModernWpf.Controls\CommandBarFlyout\CommandBarFlyoutCommandBar.cs, ModernWpf.Controls\CommandBarFlyout\CommandBarFlyoutCommandBarAutomationPeer.cs, ModernWpf.Controls\CommandBarFlyout\CommandBarFlyoutCommandBarTemplateSettings.cs, ModernWpf.Controls\CommandBarFlyout\CommandBarFlyoutOverflowPanel.cs, ModernWpf.Controls\CommandBarFlyout\CommandBarFlyout.xaml, scoped AppBar peers/properties, Gallery sample factory/tests, product/source tests, visual checker/recorder, docs\commandbarflyout-winui3-source-audit.md |
Source-backed WPF port | Refreshed against current official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. The only later runtime change optimizes inserted/replaced localized control types; ModernWpf's scoped peer flag already gives equivalent constant-time MenuItem identity. Perf2026 removes one redundant toggle overflow alignment setter and matches local shape. This pass closes wide primary overflow: the official 20-primary/5-secondary case produces exact 9/17 child counts with 11 moved commands and a generated separator. AlwaysExpanded collapse rejection and live-inserted MenuItem identity are pinned alongside collection/animation/input/shadow/sizing behavior. Fresh static deltas remain 4.99 / 4.99; exact 229x136 interactions remain 7.05 / 8.18; repeat-open recordings pass. Product tests pass 29/29 and focused Gallery tests 5/5 on net8/net10. WPF substitutions remain for compositor rasterization/backdrop, WinRT menu events, unavailable FlowsTo/FlowsFrom properties, separate popup HWND compensation, and gamepad/remote input services. |
| AppBarButton / AppBarToggleButton | dxaml\xcp\dxaml\lib\AppBarButton_Partial.cpp, dxaml\xcp\dxaml\lib\AppBarToggleButton_Partial.cpp, AppBar automation peers/helpers, dxaml\xcp\dxaml\lib\CommandBar_Partial.cpp, classic/perf2026 AppBar theme dictionaries, native focus/automation/CommandBar tests, WinUIGallery\Samples\AppBarButton\*, WinUIGallery\Samples\AppBarToggleButton\* |
ModernWpf.Controls\CommandBar\AppBarButton*, ModernWpf.Controls\CommandBar\AppBarToggleButton*, ModernWpf.Controls\CommandBar\ICommandBarElement.cs, ModernWpf.Controls\CommandBar\AppBarElementProperties*, ModernWpf.Controls\CommandBar\CommandBar.cs, AppBar templates/resources, ModernWpf.Gallery\Pages\MenusToolbarsSampleFactory.cs, product/Gallery source tests, visual checker/recorder, docs\appbarbutton-winui3-source-audit.md |
Source-backed WPF port | Refreshed against official product commit de3e767333c2f0717a6a70cb22bd192ced5ad885 and Gallery commit 29f62479d5c046a0b854a5868e5a7cd484572d87. Runtime/classic inputs remain current; perf2026 only replaces zero-duration assignments with equivalent setters. This pass closes the missing current ICommandBarElement.IsInOverflow / DynamicOverflowOrder API and behavior: positive order groups move lowest-first with adjacent separators, order-zero commands then fall back right-to-left, and property changes reflow immediately. Gallery commit 40a22976f78e63d5480afa8b49d5f3f7d5860dc6 corrected the displayed flyout XAML tree; ModernWpf mirrors and guards it. Fresh exact-size resting crops pass Light 4.43 / 4.45 and Dark 4.47 / 4.47; output/checked crops pass 5.64 / 2.37 and 6.61 / 2.51. Fresh recordings prove You clicked: Button1 and Off-to-On. Product/source tests pass 41/41 and focused Gallery tests pass 2/2 on net8/net10. Residual pixels remain confined to renderer-specific symbol/label rasterization; documented WPF substitutions remain for cascading menus, platform input services, and WinRT focus/automation details. |
| AppBarSeparator / AppBarElementContainer | dxaml\xcp\dxaml\lib\AppBarSeparator_Partial.cpp, dxaml\xcp\dxaml\lib\AppBarElementContainer_Partial.cpp, dxaml\xcp\dxaml\lib\CommandBar_Partial.cpp, generated AppBar type metadata, controls\dev\CommonStyles\AppBarSeparator_themeresources.xaml, WinUIGallery\Samples\AppBarSeparator\* |
ModernWpf.Controls\CommandBar\AppBarSeparator*, ModernWpf.Controls\CommandBar\AppBarElementContainer*, ModernWpf.Controls\CommandBar\ICommandBarElement.cs, ModernWpf.Controls\CommandBar\AppBarElementProperties*, ModernWpf.Controls\CommandBar\CommandBar.cs, theme resources, product/Gallery source tests, visual checker/recorder, docs\appbarbutton-winui3-source-audit.md |
Source-backed WPF port | Refreshed against the same current product/Gallery authority. AppBarElementContainer retains its content-only template and computed overflow state; both types now own the shared public DynamicOverflowOrder dependency property and current interface surface. Grouped-overflow regressions cover all four element owners, live order changes, whole positive groups, adjacent separators, and order-zero fallback. AppBarSeparator remains value-for-value current at 2,8,2,8 primary padding, 0,4,0,4 overflow margin, 1px stroke/overflow height, 0.5 radius, DividerStroke Light/Dark, and the High Contrast system alias. Fresh exact 334x48 crops pass Light 0.61 and Dark 0.52 under the strict 1.0 gate; Light/Dark recordings supply stable static proof alongside the button/toggle interactions. |