Skip to content

feat: fill LearnAvalonia 32 projects (Avalonia 12 desktop mainline) - #18

Merged
deku2026 merged 18 commits into
mainfrom
learnavalonia-fill
Jul 27, 2026
Merged

deku2026 merged 18 commits into
mainfrom
learnavalonia-fill

Conversation

@deku2026

Copy link
Copy Markdown
Owner

Fill 32 of 35 LearnAvalonia projects as runnable Avalonia 12.1 desktop demo apps, one demo page per knowledge-point section in the matching AvaloniaStudy doc.

Scope

  • 32 projects filled (492 demo pages total), 1:1 mapped to ArchitectureDesign/AvaloniaStudy/ stage/Capstone docs (入门→专家级, 全覆盖).
  • 3 skipped (Stage18 Mobile / Stage19 WebAssembly / Stage20 EmbeddedLinux): desktop-only policy; kept skeleton + README noting workload requirements.
  • Capstone3 (was 全平台) adapted to desktop three-platform (Win/macOS/Linux).
  • Stage24 adds Avalonia_Stage24_TestingSystem.Tests (Headless.XUnit + xUnit v3): 19 tests pass.

Architecture (方案 A: nav shell + 实验页)

Each project is an independent runnable Avalonia desktop app with a unified nav shell: left ListBox of knowledge points → right ContentControl showing the demo UserControl for the selected point. Per-project MainViewModel/TopicItem on CommunityToolkit.Mvvm 8.4.2. No cross-project shared library (matches LearnBlazor convention). CPM centralizes all package versions.

Per demo .axaml.cs carries a header comment block: Doc: (source section) / Title: / Stage: / Accept: (acceptance criterion) / Notes:.

Per-project demo counts

Project demos Project demos
Stage01 AppBuilder 15 Stage21 AppArchitecture 20
Stage02 Dispatcher 15 Stage22 DataNetworkAuth 19
Stage03 AvaloniaXaml 16 Capstone2 ComplexDesktop 15
Stage04 PropertySystem 18 Stage23 AccessibilityI18n 12
Stage05 LogicalVisualTree 18 Stage24 TestingSystem 14
Stage06 LayoutSystem 17 Stage25 Performance 11
Stage07 ControlSystem 16 Stage26 TrimmingAOT 9
Stage08 StylesThemes 14 Stage27 PackagingCI 10
Stage09 DataBindingMVVM 16 Stage28 WpfMigration 8
Capstone1 DesktopFoundation 10 Capstone3 (desktop 3-platform) 10
Stage10 WindowsDialogs 19 Stage29 SourceReading 18
Stage11 PagesNavigation 18 Stage30 PlatformBackend 11
Stage12 InputFocusGestures 18 Stage31 RenderingExpert 17
Stage13 GraphicsAnimation 21 Capstone4 CustomControlAOT 15
Stage14 CustomControls 20
Stage15 Virtualization 17 Total 492
Stage16 PlatformAbstraction 18
Stage17 WebViewHybrid 17

Verification

  • \dotnet build LearnCSharp.CI.slnx -c Release\ → 0 warnings / 0 errors
  • \dotnet test src/LearnAvalonia/Avalonia_Stage24_TestingSystem.Tests\ → 19/19 pass
  • \pre-commit run --all-files\ → all hooks pass (trailing-whitespace, end-of-file-fixer, mixed-line-ending, check-added-large-files, codespell, dotnet-format, clang-format)

Avalonia 12.1 compliance

Per roadmap §1.4 + 附录 B: no \Avalonia.ReactiveUI\ 11.x, no \UseDirect2D1, no old FileDialog (use \IStorageProvider), compiled bindings default on (\x:DataType), clipboard async \IAsyncDataTransfer, \TrayIcon+\\NativeMenu\, \SystemDecorations\\→\\WindowDecorations\, \WindowState\\ DirectProperty. DataGrid marked deprecated; TableView core; TreeDataGrid noted as Pro/commercial.

Design & plan

  • Spec: \docs/superpowers/specs/2026-07-27-learnavalonia-fill-design.md\
  • Plan: \docs/superpowers/plans/2026-07-27-learnavalonia-fill.md\

All work in worktree .worktree/learnavalonia-fill\ on branch \learnavalonia-fill\ per user instruction.

@deku2026
deku2026 merged commit ba5a4b3 into main Jul 27, 2026
9 checks passed
@deku2026
deku2026 deleted the learnavalonia-fill branch July 27, 2026 13:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants