-
Notifications
You must be signed in to change notification settings - Fork 1
Inspecting
github-actions[bot] edited this page Aug 28, 2026
·
1 revision
-
Visual tree — the whole window, auto-expanded to the selection, with type names,
x:Name/StyleId, text snippets and child counts. Search by type,@x:Name,#AutomationIdor text (spans included); arrow keys walk the tree. - Element picking — with select mode (⌖) a single tap on the device picks an element; the hit test walks the real MAUI tree (through Shell intermediaries) in paint order.
- Box model overlay — margin (orange), padding (green) and content (blue) fills, dashed alignment guides and a dimensions badge, drawn over the live app.
- Property sheet — grouped sections (Element, Style, Bounds, Layout, Text, Appearance, Transform, Interaction, Accessibility, Control, ViewModel, All properties) with color swatches, the XAML source location, and a per-property filter.
-
Layout Explorer — the selected container's children drawn to scale (with
Gridcells); click a child to select it. - Debug paint (▦ Guides) — Flutter-style outlines of every visible element, color-cycled by depth.
- Measure distances (↔) — pick a second element and get Figma-style gaps or edge offsets (see badges).
- Mirror (📱) — live device screenshots in the browser; click the image to select the element under the cursor.
- Console dump / diff — the whole tree with bounds, margins, paddings, spacings, sibling gaps, fonts and colors, ready to compare against a Figma design; Δ Diff stores a baseline and shows exactly which lines changed.
-
Accessibility — editable
SemanticPropertiesplus a WCAG contrast check against the effective background. - Performance (⏱) — live fps / average / worst frame time; 🐢 Slow runs all animations 5× slower.
- Memory (🧠) — what is still in memory and why: leak snapshots, live readings, heap dumps (details).
After enabling ↔ and picking a second element, distance labels appear on the overlay:
| Badge | Meaning |
|---|---|
W × H (dark) |
Size of the primary (first selected) element — not a distance. |
←n→ |
Free horizontal gap between the two elements (outer spacing). |
↑n↓ |
Free vertical gap between the two elements (outer spacing). |
L n |
Offset between the left edges of primary and compare. |
R n |
Offset between the right edges. |
T n |
Offset between the top edges. |
B n |
Offset between the bottom edges. |
When which ones show
- Side-by-side (no X overlap):
←n→plusT/Bif those edges are not aligned. - Stacked (no Y overlap):
↑n↓plusL/Rif those edges are not aligned. - Diagonal (no overlap on either axis):
←n→and↑n↓. - Nested / intersecting on both axes:
L/R/T/B(no outer gap).
Values are in dp. Aligned edges (delta ≈ 0) are omitted.
-
Live editing — text/number fields, switches and pickers for anything with a public setter:
FontSize,Margin,Padding,Text, colors (#RRGGBB,#AARRGGBBor named),Thickness(8,8,4,8,4,8,4), enums,LayoutOptions,Keyboard,Image.Source… The highlight re-measures after every change. -
Markup extensions — type
{Binding X},{StaticResource Y},{OnPlatform …}or your own extension ({extensions:Translate Key}) into any editor and it is applied for real; a custom extension that cannot be instantiated is kept as a XAML-only edit instead of landing as literal{…}text. -
Suggestions — text editors offer what actually fits the property: registered font aliases for
FontFamily, and{StaticResource Key}type-ahead over the resources whose value matches the property type (colors forTextColor, doubles forFontSize, strings forText…). The ⋔ button opens a small per-platform / per-idiom form (iOS · Android · WinUI, Phone · Tablet · Desktop); the applied expression is shown next to the value and remembered across app restarts. -
Markup origins — XAML-authored expressions are resolved at parse time, so at runtime a property only holds the result; the inspector reads the element's tag from the XAML embedded in the assembly and shows the truth as badges:
⋔ {OnIdiom Phone='16,0', Tablet='37,0'}next to the resolvedMargin,🖌 {StaticResource EazleFontFamily}next to the resolvedFontFamily— spans included. Style setters resolved from a{StaticResource}display as that reference too, with the referenced resource editable right underneath in the Resources popup. -
Binding-aware — bound properties show a
⛓ {Binding …}badge (compiledx:DataTypebindings included — the path is reconstructed from theTypedBinding), and literal edits on them stay runtime-only so the binding expression in your XAML is never overwritten by a constant. -
Styles — the current
Styleresolved to its resource key with all setters listed, and a picker to apply any other reachable style (local values are cleared so the style actually takes effect). See Styles & resources for style extraction and the editable Resources popup. -
Shadow —
+ Add shadowwith per-part editors, aShadowfield that accepts (and suggests){StaticResource …}shadows, and a🖌 stylebadge when the shadow comes from a style. Runtime-created shadows are written to XAML in the converter form (Shadow="0 4 8 #66000000 0.5"); XAML-declared<Shadow>tags are patched in place. -
Spans — a
Label'sFormattedTextexpands into per-span sections with add/remove, and can be created from the plainText. -
Grid — editable row/column definitions (
Auto,*,2*,48) with add/remove —{OnIdiom …}/{OnPlatform …}accepted per definition (the ⋔ editor works here too) — plusGrid.Row/Column/RowSpan/ColumnSpanon children, and the mirror's grid designer for drag-resizing tracks. -
ViewModel — the selected element's
BindingContextproperties, editable for simple types (in-memory only). - Edit history — every applied edit logged old → new, with one-click undo.
Selecting one of your own controls adds a “{Type} properties” section listing the bindable
properties it declares (one section per type in the inheritance chain), with the same editors,
history, {Binding}/{StaticResource}/{OnPlatform} support and XAML write-back as the
built-in sections. ImageSource properties accept a bundled file name or an absolute URL.
These pages are a mirror of docs/
in the repository, republished on every change. Edit them there — a change made here is overwritten
by the next run.
Using the panel
The desktop companion
Diagnosing
Automating
The rest