Group Specs

This document captures design and implementation notes for Group.

For end-user usage and examples, see Group.

Overview

  • Status: Implemented
  • Primary purpose: Provide Group as a retained-mode control with bindable properties and predictable layout/rendering behavior.
  • Key design constraints:
    • reactive dependency tracking (measure/arrange/render)
    • allocation-conscious rendering
    • AOT/trimming friendliness (no runtime reflection by default)

Implementation notes

  • Source code lives under src/XenoAtom.Terminal.UI (search for Group and GroupStyle).
  • Public properties are typically [Bindable] (generated accessors) and participate in the binding dirty model.

Layout & rendering

  • Follows the standard MeasureArrangeRender pipeline.
  • Uses style inheritance from the visual tree; control-specific style is typically GroupStyle.

Input & commands

  • Keyboard/mouse behaviors (when applicable) are exposed via commands so they are discoverable (e.g., CommandBar / CommandPalette).

Styling

  • Styling is controlled via the theme and GroupStyle (where applicable).

Tests & demos

  • Look for rendering/input tests in src/XenoAtom.Terminal.UI.Tests.
  • See the ControlsDemo for interactive examples.

Future / v2 ideas

  • Consider documenting additional style knobs and adding more deterministic rendering tests as features grow.