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.Entrieswith 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 flatMenuOverlayContent. - 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:
ArionEnginefor virtualization/layout/scroll, the backend frame pipeline for the exact same cell rendering, andScrollBarsWidgetfor 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
EmbeddedGridand 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 raiseEmbeddedListControl.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
ICommandinstances a ViewModel hands INTO the grid — the opposite direction ofGridCommands, 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,
CellChangingandCellEditCommittedrun 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
FilterStateproperty. - 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.Entrieswith 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
ArionViewas 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.Itemsurvives sorting and filtering;GridCellRef.ElementIdsurvives column reordering.GridCellRef.Columnis 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".
Enabledlets 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.
OnStickyChainmarks 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 (
GpuPresentPathon each grid control). - GridEditOutcome
- How a programmatic edit ended.
