ArionUI.Grid Core

Namespace in the ArionUI.Grid package, 49 types.

Classes

ArionGridApi
The consumer API of a grid, in ONE place, on every host.
CellContextMenuEventArgs
Context for a cell right-click. The grid fills CellContextMenuEventArgs.Entries with its defaults; the app edits the list to add, remove or replace items.
ComboListOverlayContent
The classic combo dropdown as host-neutral overlay content: a framed list with the current value highlighted, keyboard navigation and type-ahead; a pick commits and closes. The rows are an EmbeddedGrid, so theming, hover, virtualization and the scrollbar are the engine's own. Contrast the flat MenuOverlayContent.
EmbeddedGrid
A REAL grid rendered inside a rectangular region of a self-drawn overlay pane — the dogfooding building block for panes that show a list/table (the value filter checklist today, combo/chooser later). It reuses the whole grid stack: ArionEngine for virtualization/layout/scroll, the backend frame pipeline for the exact same cell rendering, and ScrollBarsWidget for the identical self-drawn scrollbar (idle-thin → hover-thick, drag). Nothing about how rows/cells/scrollbars look or behave is re-implemented here. Coordinates in/out are LOCAL to the region (0,0 = its top-left).
EmbeddedListControl
An embedded value list as a CONTROL: wraps an EmbeddedGrid and owns the behaviours every list surface shares: a click puts the keyboard cursor on the hit row (so the arrows continue from there), arrows/Home/End move it with scroll-into-view and a spoken row label, Space/Enter raise EmbeddedListControl.RowActivated (the same endpoint a click reaches), and the cursor IS the pointer's hover state (EmbeddedGrid.SetKeyboardHover — never an invented second visual). The frame border shows the focus: accent while focused.
GridAccessibility
What the grid TELLS assistive technology — one host-neutral source of truth.
GridCommand
One grid action as an ICommand.
GridCommandInputs
The ICommand instances a ViewModel hands INTO the grid — the opposite direction of GridCommands, which the grid offers to the application. A ViewModel cannot subscribe to the grid's events without a reference to the control; instead it binds these properties.
GridCommands
The things a toolbar button or a shortcut triggers.
GridEditing
Programmatic cell editing: open, type, commit, cancel, or set a value in one call, through the same path as a keyboard edit, so validation, CellChanging and CellEditCommitted run as usual.
GridEvents
What the grid tells the application, in one place on every host.
GridFilters
The bindable filter model of a grid: capture the current filters, apply a captured state, clear everything, and hear when the user changes a filter. Column keys make the state independent of column order and visibility.
GridFilterState
The complete filter state of a grid as a plain, serializable object: column filter texts and operators, allowed-value lists and the search text, keyed by column key. A view model keeps one to restore a filter later or to bind it through the host's FilterState property.
GridLayoutApi
Columns, sizing and persisted layout.
GridPanes
The pane stack: filter lists, menus, pickers, the search bar.
GridPresentation
Customization seams for infrequent presentation surfaces. The provider contracts stay host-neutral; Avalonia and WPF keep rendering their native shells.
GridRowsApi
Opening and closing rows — a group, a tree node, a detail band — addressed by ITEM.
GridSelectionApi
What is selected, and how selecting behaves.
GridState
Geometry, scroll extent, loading/empty state and behaviour switches.
GridTimingApi
Recurring work in step with the grid's frames — for live data an application pushes on a clock (a feed, a simulation, a poll).
GridTuning
The numbers BOTH hosts must agree on — product decisions, not platform quirks.
HeaderContextMenuEventArgs
Context for a header right-click. The grid fills HeaderContextMenuEventArgs.Entries with its defaults; the app edits the list to add, remove or replace items. Shared by all hosts so a handler compiles against every platform.
ViewTile
Any ArionView as a board tile: a chart, a 3D scene, a table, a card wall or a pivot - board.Add(new ViewTile(new ChartView(model)) { Height = 260 }, row: 1, col: 0).

Records

GridCellEditCommittedEventArgs
A cell edit was committed, as delivered by GridEvents.CellEditCommitted.
GridCellRef
A consumer-facing cell identity. GridCellRef.Item survives sorting and filtering; GridCellRef.ElementId survives column reordering. GridCellRef.Column is the fallback for views such as cards that do not expose column element ids.
GridCellTooltipContext
What the tooltip provider gets to look at for one hovered cell.
GridColumnHeaderContent
Custom header appearance; null members keep the standard look.
GridColumnHeaderContext
UI-thread snapshot of one column's header state, handed to the header provider.
GridEmptyStateContent
What the empty state shows; null members fall back to the defaults.
GridEmptyStateContext
Live grid state handed to the empty-state provider.
GridLoadingContext
Live grid state handed to the loading-text provider.
GridSelectionChangedEventArgs
Snapshot of the selection after a change, as delivered by GridEvents.SelectionChanged.
GridStateChange
One observable state change of the grid, as delivered by GridState.Changed.
SelectionAction
A bulk action offered in the selection footer (§5). The grid draws the button (label + style); the APP owns what it DOES — the engine can't know "export" or "delete". Enabled lets an app gray one out. Invoked with the current selection ranges live.

Structs

DragVisual
Transient drag overlay (column reorder / drag-to-group): a floating ghost of the dragged caption at the cursor + a drop indicator. All in VIEWPORT pixels (the host computes them), so the renderer just paints them on top. DragVisual.DropLineX = insertion line x (NaN = none); DragVisual.DropRect = a highlighted drop zone, e.g. the group panel (empty = none).
FilterRowView
UI-thread snapshot of the filter row for rendering (thread-safe on the GPU path): per-column texts + the currently edited box incl. caret.
FrameChrome
All optional UI chrome of one frame in a single bundle — filter row, frozen block, drag overlay, scrollbars, selection footer, resize guide and loading/empty overlay.
GridDataFailure
The grid could not read something the APPLICATION supplies - a column's text delegate, a chart series, a tooltip - outside the drawing of a frame.
GridFrame
A rounded frame the grid draws around itself: corners cut in the colour of what lies outside, and a hairline border. With it a grid is a card on every host, without a native container that rounds and clips it - which not every host can do.
GridScrollPosition
Where the grid stands after a scroll — everything a status line needs, in one value, so a readout does not have to ask four properties and hope they agree.
HeaderPointerState
Where the pointer is over the built-in column header. Pointer state of the GRID, not content of the template: the grid's input handling keeps it and every frame carries a snapshot of it to the renderer (FrameChrome.HeaderPointer).
HoverBand
One hover highlight band: a rect in absolute logical viewport space and the §9 fade amount it is drawn with. OnStickyChain marks the band of a sticky-chain row — it draws ABOVE the chain (its row tint), while content bands draw below it (a half-covered row slides its band under the chain like under any viewport edge).
ResizeGuide
Live column-resize guide (design §13): a gold line over the full grid height at ResizeGuide.X (viewport px) + a px badge.

Interfaces

IArionGridHost
The grid as an application drives it, independent of the UI framework. Both host controls implement it, so application logic can be written once for Avalonia and WPF.
IGridActions
What a view model can make the grid do without holding the control: the toolbar commands plus the item-addressed operations a business view model needs. The host exposes it as a read-only bindable property, so a view model receives it through a binding and never sees the control type.
IGridEditPolicy
A view model's veto over editing, bound as one object instead of two event handlers: the grid asks before an editor opens and before every write (typing, paste, Delete, checkbox, fill-down). A non-null answer is the reason the edit is refused; the grid announces it to assistive technology and raises GridCommandInputs.EditRefused.
IGridFrameSurface
A surface that can draw a nested grid frame into a region of itself.

Enums

GpuPresentPath
How a host's GPU frames reach the screen - a diagnostic, the same on every host (GpuPresentPath on each grid control).
GridEditOutcome
How a programmatic edit ended.