Skip to content
CAI
Software that uses CAICheck a score

HandyOrg/HandyControl

42.4

Weak · 23 September 2026

70.2k

lines of production code

C#

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a cross-platform UI component library, primarily for WPF and Avalonia, that provides a comprehensive set of customizable controls, styles, and templates. It supports multiple .NET frameworks and includes tooling extensions and project templates to streamline development workflows. The library also maintains a themed documentation site for user guidance.

How it got here

2019 — multi-targeting and UI modernization

8 changes.

The project expanded its architectural support to include .NET Core 3.1 and Avalonia, while modernizing the WPF control library with new compact styles and updated templates. Parallel efforts focused on improving the developer experience through Visual Studio integration and reorganizing the demo application for cross-platform compatibility.

2020–2023 — Avalonia port and theme consolidation

4 changes.

This period focused on expanding the library's cross-platform capabilities by introducing a full Avalonia implementation, including new UI controls and attached properties. Simultaneously, the project simplified its internal structure by consolidating XAML theme resources and updating the Visual Studio extension for broader compatibility.

Features

Added Visual Studio toolbox manifest for WPF controls

A new VisualStudioToolsManifest.xml file has been added to the build directory, registering a comprehensive list of HandyControl WPF controls (such as Button, ComboBox, DatePicker, and various panels) in the Visual Studio toolbox. This enables developers to drag and drop these controls directly from the toolbox in the Visual Studio designer, streamlining the UI development workflow.

build · high confidence

Added compact styles for DataGrid and ListView, and new styles for Window and MessageBox

The library now provides smaller, more compact visual styles for the DataGrid and ListView controls, accessible via the .Small suffix (e.g., DataGrid.Small, ListView.Small), which reduce row heights and padding for denser data presentation. Additionally, new style definitions have been introduced for the Window and MessageBox controls, updating their templates and visual properties to align with the current design system.

_src/Net\_40/HandyControl\_Net\40/Themes/Styles · high confidence

Initial Avalonia demo application scaffolding

The HandyControlDemo application for Avalonia is introduced, providing a complete demo environment to showcase the library's controls and styles. This includes the core application entry point (App and MainWindow), a data model for cataloging demos, and a comprehensive set of localized string resources for the UI.

_src/Avalonia/HandyControlDemo\Avalonia · high confidence

New UI controls and attachable properties for the Avalonia UI framework

The HandyControl library for Avalonia adds a suite of new UI components and attachable properties. New controls include ButtonGroup, ProgressButton, and ConfettiCannon, alongside a Dialog implementation. The update also introduces numerous attached properties for styling and behavior, such as BackgroundSwitchElement, BorderElement, ContentControlAttach, IconElement, and TitleElement, enabling developers to apply consistent themes, hover effects, and layout configurations to existing controls.

_src/Avalonia/HandyControl\Avalonia · high confidence

New base styles for CheckComboBox, ComboBox, and TreeView

The base style definitions for CheckComboBox, ComboBox, and TreeView have been added to the Net 4.0 theme resources. This introduces updated control templates and visual states for these components, including a new expand/collapse toggle style for TreeView and refined popup and selection behaviors for the combo boxes. Users will see a consistent, modernized appearance and improved interaction states for these controls across the application.

_src/Net\_40/HandyControl\_Net\40/Themes/Styles/Base · high confidence

Restructured demo application into a shared project

The demo application has been reorganized into a shared project structure (HandyControlDemo\_Shared) to support cross-platform or multi-targeting builds. This change introduces a new project item file (HandyControlDemo\_Shared.projitems) that aggregates all shared code-behind files, XAML files, and data models (such as AppConfig, GlobalData, and various DemoModels) into a single cohesive unit. Additionally, a new DemoHelper class was added to load demo code from embedded resources, and the application's startup logic, including singleton enforcement and skin configuration, has been consolidated within the shared App class.

src/Shared · high confidence

Behavioural changes

Consolidated theme resources into a single Theme.xaml file

The project's XAML theme resources, including converters, geometry definitions, and control styles, have been consolidated into a single \Theme.xaml\ file. This change simplifies the theme structure by merging previously separate resource dictionaries, ensuring all visual assets and styles are loaded from one location.

_src/Net\_40/HandyControl\_Net\40/Themes · high confidence

HandyControl VS Templates extension updated to version 3.3

The HandyControl Visual Studio extension has been updated to version 3.3. This update includes the VSIX manifest, project templates for WPF (.NET Framework and .NET Core), and associated metadata files, ensuring compatibility with Visual Studio 2019 and 2022.

extension · high confidence

NexT theme v7.1.0 release and configuration overhaul

The NexT theme has been updated to version 7.1.0, introducing a significantly expanded and restructured configuration file (\_config.yml) that adds extensive support for HandyOrg-specific UI elements, including new menu items for 'HandyControl', 'Quick Start', and detailed property attachers. The release also includes a comprehensive update to the Chinese (zh-CN) language pack with new translations for UI components like copy buttons, comments, and copyright notices, alongside the addition of custom layout templates for the head, header, and sidebar to allow for easier theming.

doc/themes · high confidence

Redesigned theme styling and layout components

The Next theme's visual presentation has been updated with new styles for the header, sidebar, post layout, and page templates. This includes a new 'back-to-top' button, a GitHub banner, and updated styles for code highlighting, post titles, and navigation menus. The sidebar now features a dimmer overlay and improved author and link sections. Additionally, the theme supports custom scrollbars, a rainbow header effect, and various post-related UI elements like comments, rewards, and reading progress bars.

doc/themes/next · high confidence

Restructured solution to support multiple target frameworks and Avalonia

The project has been reorganized into a multi-targeting solution that builds for .NET Framework 4.0, .NET 4.5+, and .NET Core 3.1+. This change introduces a new Avalonia-based demo and library, alongside shared projects for Microsoft.Expression.Drawing, Microsoft.Expression.Interactions, and System.Windows.Interactivity. The solution now supports distinct build configurations for each target framework, allowing developers to choose the appropriate build for their environment.

src · high confidence

Dependencies

Added Visual Studio project templates and updated documentation dependencies

Added new Visual Studio project templates for WPF and WPF Core applications, including the \HandyControl\_VS\_Templates\ extension and associated \WpfApp\ and \WpfCoreApp\ project files, which allow users to quickly scaffold new projects with HandyControl. Additionally, the \doc\ directory now includes a \package.json\ and \package-lock.json\ for the Hexo-based documentation site, establishing the Node.js dependencies for building the documentation.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 44 → 42 (-1.3)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 52 → 50 (-2.2)
  • Architecture 92 → 92 (-0.0)
  • Maturity 46 → 50 (+3.5)
  • Readiness 42 → 40 (-1.4)
  • Security 38 → 35 (-2.8)
  • Performance 70 → 70 (+0.0)

Resolved (48)

  • Analyzed solution does not cover the bulk of the repository
  • Bounded contexts not declared
  • Duplicated block (10 lines × 2) (src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs)
  • Duplicated block (10 lines × 2) (src/Shared/HandyControl_Shared/Tools/Helper/ArithmeticHelper.cs)
  • Duplicated block (10 lines × 2) (src/Shared/Microsoft.Expression.Drawing/Drawing/PathSegmentHelper.cs)
  • Duplicated block (10 lines × 2) (src/Shared/Microsoft.Expression.Drawing/Drawing/PathSegmentHelper.cs)
  • Duplicated block (11 lines × 3) (src/Shared/HandyControl_Shared/Controls/Other/DashedBorder.cs)
  • Duplicated block (12 lines × 2) (src/Shared/HandyControl_Shared/Controls/Panel/WaterfallPanel.cs)
  • Duplicated block (12 lines × 2) (src/Shared/HandyControl_Shared/Controls/Slider/RangeSlider/RangeTrack.cs)
  • Duplicated block (13 lines × 2) (src/Shared/HandyControl_Shared/Controls/Block/RunningBlock/RunningBorder.cs)
  • Duplicated block (13 lines × 2) (src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs)
  • Duplicated block (13 lines × 2) (src/Shared/HandyControl_Shared/Controls/Text/SimpleText.cs)
  • Duplicated block (13 lines × 2) (src/Shared/HandyControl_Shared/Controls/Window/MessageBox.cs)
  • Duplicated block (15 lines × 2) (src/Shared/HandyControl_Shared/Interactivity/MouseDragElementBehaviorEx.cs)
  • Duplicated block (17 lines × 2) (src/Shared/HandyControl_Shared/Controls/Cover/CoverView/CoverView.cs)
  • Duplicated block (19 lines × 2) (src/Shared/HandyControl_Shared/Controls/Base/SimpleItemsControl.cs)
  • Duplicated block (19 lines × 2) (src/Shared/HandyControl_Shared/Controls/Cover/CoverView/CoverView.cs)
  • Duplicated block (19 lines × 2) (src/Shared/HandyControl_Shared/Controls/Cover/CoverView/CoverView.cs)
  • Duplicated block (19 lines × 2) (src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs)
  • Duplicated block (20 lines × 2) (src/Shared/HandyControl_Shared/Controls/Panel/FlexPanel.cs)
  • …and 28 more

New (108)

  • Change coupling: DateTimePicker.cs ↔ TimePicker.cs (src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no project overview (README.md)
  • Duplicated block (10 lines × 2) (src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs)
  • Duplicated block (10 lines × 2) (src/Shared/HandyControl_Shared/Data/Gif/GPStream.cs)
  • Duplicated block (10 lines × 2) (src/Shared/HandyControl_Shared/Tools/Helper/FullScreenHelper.cs)
  • Duplicated block (10 lines × 2) (src/Shared/Microsoft.Expression.Drawing/Drawing/PathSegmentHelper.cs)
  • Duplicated block (11 lines × 2) (src/Shared/HandyControl_Shared/Controls/Text/OutlineText.cs)
  • Duplicated block (11 lines × 2) (src/Shared/HandyControl_Shared/Tools/Hook/KeyboardHook.cs)
  • Duplicated block (11 lines × 2) (src/Shared/Microsoft.Expression.Drawing/Drawing/PathSegmentHelper.cs)
  • Duplicated block (11 lines × 3) (src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs)
  • Duplicated block (12 lines × 2) (src/Shared/HandyControl_Shared/Controls/Panel/WaterfallPanel.cs)
  • Duplicated block (12 lines × 2) (src/Shared/HandyControl_Shared/Controls/Slider/CompareSlider/CompareTrack.cs)
  • Duplicated block (12–14 lines × 2) (src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs)
  • Duplicated block (14 lines × 2) (src/Shared/HandyControl_Shared/Tools/Helper/ArithmeticHelper.cs)
  • Duplicated block (15 lines × 2) (src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs)
  • Duplicated block (15 lines × 2) (src/Shared/HandyControl_Shared/Controls/Window/MessageBox.cs)
  • Duplicated block (15 lines × 3) (src/Shared/HandyControl_Shared/Controls/Block/RunningBlock/RunningBorder.cs)
  • Duplicated block (16 lines × 2) (src/Shared/HandyControl_Shared/Controls/Text/OutlineText.cs)
  • …and 88 more

Architecture

  • Unchanged — 21 containers · 0 contexts · 0 edges

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

HandyOrg/HandyControl was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 2c0875ebd67326e0c67282967e3e809c69282fee — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.