Concepts
The ideas behind IcyUI: what you need to know to predict how your UI behaves. Each page explains one part of the model with a small example, the rules that matter, and the usual pitfalls; the API reference has every member.
- Canvas, the host and the element tree: Where your UI lives: the canvases the engine draws, the host that connects them to your game, and the tree of elements on each canvas.
- Configuration: What
UseIcyUI()sets up, the builder's sections, and how your settings override the engine's defaults. - Layout: How elements get their size and position: measure and arrange, sizes and margins, alignment, panels and scale.
- Data binding: Connecting elements to your view model: the data context, binding modes, element bindings and conversion.
- Resources, styles and themes: Reusing values and looks: resource dictionaries, implicit and keyed styles, the theme, and which value wins.
- Control templates and visual states: Replacing how a control looks, and changing it with its state: hovered, pressed, focused, checked.
- Input, focus and navigation: Mouse, keyboard, gamepad and touch: focus, spatial navigation, gestures, and drag and drop.
- Animations: Animating any property over time, from code or from visual states, with easing.
- DPI and UI scaling: Keeping the UI the right size on every display: DPI scaling, a reference resolution, and a player UI-size setting.
- Localization: Showing your UI in the player's language: localizers,
{Localize}, and switching languages. - Assets and fonts: Loading markup, images and fonts: where files come from, system and imported fonts, and the fallback font.
- Logging and diagnostics: IcyUI's warnings and where they go, and the debug tools that show layout boxes, focus and frame time.
- Markup editing and design tools: Editing your markup while the game runs with the in-game editor, and saving it back to your files.