FAQ and troubleshooting
The questions that come up in the first hour, and what the messages mean. If yours is not here, the issue tracker is the place to ask.
Text and language
- Why are the menus and dialogs in German?
- The built-in texts ship in German, independent of the machine's culture. Call
ArionUiText.UseEnglishTexts()at start-up, plusEnglish()on the catalogues of the Pro modules you use (GroupingUiText,PivotUiText,ChartUiText,FormattingUiText,Scene3DUiText). See Localisation. - The empty grid still says "Keine Ergebnisse".
- The empty-state title is a property of each grid, not part of the text catalogue. Set
EmptyStateTitleon the control orApi.State.EmptyStateTitle. - Some characters show as boxes.
- The grid falls back to installed fonts for characters the requested font lacks; a machine without any font for a script shows boxes. Register a font that covers it with
ArionFonts.Register. If joined scripts such as Arabic look broken, text shaping is off: the native HarfBuzz library is missing,ArionFonts.ShapingisSimple, orARION_SHAPING=0is set.
Rendering and the GPU
- The log says
[ArionUI] GPU-Lease nicht verfügbar → CPU-Fallback: … - The Avalonia host got no GPU context and draws on the CPU instead. The grid works; scrolling repaints only the newly exposed strip, so the cost follows the pixel area, not the row count. The text after the colon is the reason, also available as
grid.FallbackReason;grid.ActiveRendereris thenRendererKind.Bitmap. The message is German in this version. - A 3D chart stays empty.
- 3D needs a GPU; there is no CPU path. Set
view.Scene.FallbackTextso users see a sentence instead of an empty area. - My laptop renders on the integrated GPU.
- Set the environment variable
ARION_GPU=highbefore start-up, or a part of the adapter's name such asnvidia.grid.RendererNameshows which adapter really drew. See Hosting and rendering. - How do I see what the grid is doing?
- Set
ArionGrid.DiagnosticLog(default: the console), subscribe toRendererFailed,FrameRenderedandgrid.Api.DataReadFailed, and to the process-wideGridDiagnostics.Reported.
Licence and watermark
- Do I need a licence key?
- Not for a preview version. Every version with a prerelease suffix, such as
0.1.0-preview.1, runs every Pro module without a key and without a watermark, also in commercial software. See Pro modules. - A watermark appears in a preview build.
- Something applied a key. In a preview build no key is needed, but an applied key — even a malformed or expired one — is judged by the normal rules, and a key that does not cover a module in use brings the watermark back. Remove the
ArionLicense.Applycall, or checkArionLicense.State. - What happens after the preview?
- Release versions will check a soft offline key; nothing phones home, and without a key the grid keeps working with a watermark. The terms are not final. A preview version you have obtained stays usable under its preview licence.
Environment switches
Three environment variables are meant for users of the library. They are read once at start-up.
| Variable | Effect |
|---|---|
ARION_GPU | Picks the graphics adapter: high, low, or part of the adapter's description. |
ARION_GPU_SAMPLES | Caps multisampling for every GPU cell, 3D views included; 0 turns it off. |
ARION_SHAPING=0 | Forces simple text drawing (one glyph per character), whatever the application sets. |
The source reads further ARION_* variables. They are switches for measuring, image tests and the showcase, not part of the library's surface, and they may change or disappear without notice.
Columns, data, editing
- A column does not sort when I click its header.
- It has no sort key. The typed factories set one;
Column.Textneeds.Sortable(key).CanUserSortColumnsmay also be off. - Grouping does nothing.
.WithGrouping()on a column only offers it. InstallArionUI.Groupingand callview.EnableGrouping().- Capturing a layout throws.
- A column has no key. Layouts name columns by key; give every column
.WithKey("…"). - I changed a property and the row did not update.
- The grid only knows about changes it is told about. Use an
ObservableCollectionwith items that raisePropertyChanged(throughObservableItemsSourceorItemsSource); a plain list is read once. For a one-off change,grid.InvalidateItem(index)repaints a row. - Rows of my virtual source stay placeholders.
VirtualItemsSourceraisesRangeLoadedon the fetch's thread and leaves the repaint to you: callgrid.InvalidateRange(first, last)on the UI thread. See Data sources.- An edit is refused without a message.
- The value did not parse for a typed column, failed the mask or a validator, or the edit policy refused it.
Api.Editing.SetValueandApi.Actions.SetValuereturn theGridEditOutcome;Api.CommandInputs.EditRefusedcarries the policy's reason. - Binding
Actionsin WPF XAML fails with MC3065. - The WPF markup compiler refuses it because the property has no CLR setter. Make that one binding in code with
SetBinding(ArionGrid.ActionsProperty, …); Avalonia markup accepts it. See MVVM and binding.
Hosts and platforms
- Is there a WinForms package?
- Not yet. The WinForms host,
ArionGridControl, builds and runs; referencesrc/ArionUI.Rendering.WinFormsfrom the repository. See Install and first grid. - Does it run on macOS and Linux?
- The Avalonia host targets
net10.0. Development, the automated tests and the measurements so far all happen on Windows; other platforms are untested. Reports are welcome. - Can I use the grid in XAML without code?
- The control yes, the columns no: columns are declared in code on a view, which a view model can expose and the XAML binds to
MainView. For quick screens,Column.AutoGenerate<T>()builds columns from a type.
Reporting a problem
Issues go to GitHub. Useful to include: the host and version, RendererName and, on Avalonia, ActiveRenderer and FallbackReason, the lines from DiagnosticLog, and if it is about drawing, a frame from TryWriteFramePng.
