Mosaic UI for WPF Controls Overview

VerifiedSafe

Overview of all Mosaic UI for WPF controls. Use when implementing a control, looking up properties/events, or choosing the right control for a UI requirement.

Sby Skills Guide Bot
DevelopmentIntermediate
7/27/2026
Claude Code
#wpf#xaml#ui-controls#dotnet#control-reference

Recommended for

Automated summary

Provides a categorized inventory of Mosaic UI for WPF controls, including base classes, namespaces, and links to per-control documentation.

Strengths

  • Lists many controls by category (input, display, layout, media, navigation, data) with base class and one-line purpose.
  • Clarifies canonical, CLR, and special XAML namespace mappings, including VT52Terminal, waveform, AvalonDock, and theme tokens.
  • Points to dedicated control files for properties, events, and examples instead of duplicating them in the overview.
  • Covers theme-aware and lookless WPF control usage with DynamicResource theme tokens.

Limitations

  • It is an index/overview, not a full API reference; detailed properties and events live in linked files that may not be loaded.
  • Assumes a WPF project already references Mosaic.UI.Wpf and that the reader knows XAML.
  • Does not provide migration, troubleshooting, or design guidance beyond control selection.
When to use it

Use when you need to find, choose, or start implementing a Mosaic UI for WPF control and need its namespace or documentation entry point.

When not to use it

Do not use when the project is not built on Mosaic.UI.Wpf, or when you need general WPF/XAML authoring guidance unrelated to this library.

Security analysis

Safe
Quality score82/100

This is pure reference documentation for a WPF control library: namespace declarations, a control/behavior inventory, theme-token examples, and setup tips. It declares no tools, runs no code, and contains no scripts, network calls, credential handling, or destructive instructions. The only external references are XAML namespace URIs and a GitHub repo used for schema identification, which is normal for a UI library.

No concerns found

How this analysis is made

Examples

Find a searchable input control
Which Mosaic UI for WPF control should I use for a searchable dropdown with async results, and how do I reference it in XAML?
Add a themed accent button
Show me how to add an AccentButton to my WPF view using the Mosaic.UI.Wpf namespace and theme tokens.
Look up VT52Terminal namespace
I need to use the VT52Terminal control in a Mosaic UI WPF app; which XAML namespace should I declare and where is its control documentation?

name: mosaic-controls description: "Overview of all Mosaic UI for WPF controls. Use when: implementing a control, looking up properties/events, asking what controls exist, choosing the right control for a UI requirement." argument-hint: "Optional: name of a specific control to focus on (e.g. 'ToggleSwitch', 'AutoCompleteBox')"

Mosaic UI for WPF — Control Overview

Mosaic UI for WPF (Mosaic.UI.Wpf) is a lookless, theme-aware WPF control library. Controls are consumed via the canonical XML namespace:

xmlns:mosaic="http://schemas.apexgate.net/wpf/mosaic-ui"

or the CLR form:

xmlns:mosaic="clr-namespace:Mosaic.UI.Wpf.Controls;assembly=Mosaic.UI.Wpf"

The VT52Terminal control requires the sub-namespace:

xmlns:vt52="clr-namespace:Mosaic.UI.Wpf.Controls.VT52Terminal;assembly=Mosaic.UI.Wpf"

The waveform visualizer controls are also mapped to the canonical URI, or can be referenced with:

xmlns:waveform="clr-namespace:Mosaic.UI.Wpf.Controls.WaveformVisualizer;assembly=Mosaic.UI.Wpf"

AvalonDock is shipped as a separate package/project and uses its own XAML URI:

xmlns:ad="https://github.com/blakepell/MosaicUIWpf"

For theme tokens (brushes, font sizes, etc.), declare:

xmlns:themes="http://schemas.apexgate.net/wpf/mosaic-ui"

and reference tokens like {DynamicResource {x:Static themes:MosaicTheme.ControlTextForegroundBrush}}.


Control Inventory

For detailed property/event/example documentation, read the individual file listed in the Details column.

| Control | Base Class | Category | Description | Details | |---|---|---|---|---| | AccentButton | Button | Input | Button with built-in accent color variants | AccentButton.md | | AdaptiveImage | Image | Media | Pixel-level HSL theme adaptation for images (light/dark mode) | AdaptiveImage.md | | AsteriskTextBlock | Control | Display | Displays masked text with a configurable mask character (default: ●) | AsteriskTextBlock.md | | AudioPlayer | Control | Media | Audio transport control with playlist, seek slider, playback events, and MediaPlayer backing | AudioPlayer.md | | AudioPlayerSpectrumAnalyzer | FrameworkElement | Media | WASAPI loopback spectrum analyzer intended to pair with AudioPlayer | AudioPlayer.md | | AutoCompleteBox | Control | Input | Searchable autocomplete combo box with async provider support | AutoCompleteBox.md | | Avatar | Button | Display | User avatar with image source or fallback initials | Avatar.md | | Badge | ContentControl | Display | Small inline status/count badge | Badge.md | | BindablePasswordBox | ContentControl | Input | Password field with a bindable Password string property | BindablePasswordBox.md | | ContentPanel | ContentControl | Layout | Themed content container with header, footer, separator, and corner styling | ContentPanel.md | | ChatThread | UserControl | Data | Chat conversation view with sent/received message templates | ChatThread.md | | CheckBoxList | ListBox | Input | Multi-select list that shows checkboxes beside each item | CheckBoxList.md | | ClipBorder | Border | Layout | Border that clips child content to its CornerRadius | ClipBorder.md | | ColorPicker | UserControl | Input | Visual color picker with hex input and preset colors | ColorPicker.md | | DatePicker | Control | Input | Mosaic date picker with popup month calendar and nullable selected date | DatePicker.md | | DocumentContainer | TabControl | Navigation | Closable, reorderable document tabs with active-document tracking | DocumentContainer.md | | EditableTextBlock | Control | Input | Inline editable text that toggles between view/edit mode | EditableTextBlock.md | | FavoriteCheckBox | CheckBox | Input | Symbol-based favorite/star toggle with configurable brushes | FavoriteCheckBox.md | | FileDropper | Control | Input | File drag-and-drop target with file type validation and command/event hooks | FileDropper.md | | Files | Control | Data | Directory file list with shell icons, sorting, selection, watcher refresh, and activation event | Files.md | | FlipPanel | ContentControl | Display | Animated flip panel with front and back content faces | FlipPanel.md | | GravatarImage | Image | Media | Loads and displays a Gravatar avatar from an email address | GravatarImage.md | | HexColorTextBox | ComboBox | Input | Editable hex color field (#RGB, #RRGGBB, #AARRGGBB) with shade drop-down | HexColorTextBox.md | | Hyperlink | ContentControl | Navigation | Clickable link that opens a URI or executes an ICommand | Hyperlink.md | | InertiaScrollViewer | ScrollViewer | Layout | ScrollViewer with animated inertia/momentum on mouse wheel | InertiaScrollViewer.md | | InfoCard | ContentControl | Display | Card with animated accent bar, title, header, body, and footer | InfoCard.md | | InputWaveformVisualizer | WaveformVisualizerBase | Media | Live waveform from a selectable Windows audio input device | WaveformVisualizer.md | | LabeledSeparator | ContentControl | Display | Horizontal separator with an embedded text label | LabeledSeparator.md | | LoopbackWaveformVisualizer | WaveformVisualizerBase | Media | Live waveform from the default Windows audio render device via WASAPI loopback | WaveformVisualizer.md | | MarkdownEditor | UserControl | Input | Markdown editor built on SyntaxEditor with toolbar, snippets, save helpers, and preview/copy actions | MarkdownEditor.md | | MarkdownViewer | Control | Display | WPF-native Markdown renderer backed by a copyable FlowDocument/RichTextBox | MarkdownViewer.md | | MessageBox | static class | Dialog | Themed drop-in replacement for System.Windows.MessageBox Show overloads | MessageBox.md | | NumericTextBox | TextBox | Input | Text box that accepts only numeric input with configurable decimal places | NumericTextBox.md | | ProgressRing | Control | Display | Indeterminate animated ring/spinner controlled by IsActive | ProgressRing.md | | PropertyGrid | Control | Data | Object property inspector using TypeDescriptor with category grouping | PropertyGrid.md | | RadialProgressBar | ProgressBar | Display | Circular progress bar with fill, pie, shape, and indeterminate modes | RadialProgressBar.md | | RelativePanel | Panel | Layout | Arranges children relative to each other via attached properties | RelativePanel.md | | ScalingTextBlock | TextBlock | Display | TextBlock that automatically lowers font size to fit available width | ScalingTextBlock.md | | SearchBox | TextBox | Input | Text box with watermark, clear button, and SearchExecuted event | SearchBox.md | | SettingsItem | ContentControl | Display | Settings row with icon, title, description, and slot for a control | SettingsItem.md | | ShadowPanel | ContentControl | Layout | Content container with configurable drop shadow effect | ShadowPanel.md | | ShadowTextBlock | TextBlock | Display | TextBlock with automatically applied drop shadow | ShadowTextBlock.md | | Shield | Control | Display | GitHub-style shield/badge with label and value sections | Shield.md | | SideMenu | UserControl | Navigation | Collapsible navigation side menu with search and drag-drop reorder | SideMenu.md | | SimpleStackPanel | Panel | Layout | Efficient stack panel with uniform Spacing between children | SimpleStackPanel.md | | SmallPanel | Panel | Layout | Overlay panel that stacks children in the same bounds | SmallPanel.md | | SplitButton | ContentControl | Input | Button with a separate drop-down chevron that opens a ContextMenu | SplitButton.md | | SplitPanel | Control | Layout | Two-pane resizable container with a draggable GridSplitter and bindable split ratio | SplitPanel.md | | StopwatchDisplay | ContentControl | Display | Real-time stopwatch with Start/Stop/Reset methods | StopwatchDisplay.md | | StringListEditor | ContentControl | Input | Editable list of strings with add/remove and duplicate/validation support | StringListEditor.md | | SymbolRating | Control | Input | Star/symbol rating control with hover preview and deselect | SymbolRating.md | | SyntaxEditor | TextEditor | Input | AvalonEdit-based code editor with Mosaic themes, bundled syntax highlighting, search, JSON commands, and line editing commands | SyntaxEditor.md | | TabControl | TabControl | Navigation | Mosaic-themed tab control with top/bottom active indicator | TabControl.md | | TagBox | Control | Input | Token/tag entry box with removable chips, duplicate control, and cancellable change events | TagBox.md | | ToggleButton | ToggleButton | Input | Mosaic-themed toggle button with checked/unchecked background | ToggleButton.md | | ToggleSwitch | Control | Input | Mobile-style on/off toggle switch with custom colors and MVVM | ToggleSwitch.md | | TwoPaneView | Control | Layout | Adaptive two-pane layout (side-by-side or stacked) | TwoPaneView.md | | ValidationSummaryPanel | ItemsControl | Data | Validation error collector and display panel with auto-hide | ValidationSummaryPanel.md | | VersionTextBlock | TextBlock | Display | Displays version string from a configurable assembly source | VersionTextBlock.md | | VT52Terminal | TextEditor | Terminal | Full ANSI/VT100/VT220/xterm terminal emulator (AvalonEdit-based) | VT52Terminal.md | | WindowTitleBar | UserControl | Windowing | Custom Mosaic window title bar with min/max/close and custom content slots | WindowTitleBar.md |


Behaviors

Behaviors live in the Mosaic.UI.Wpf.Behaviors namespace and add functionality to existing WPF controls without subclassing them — reach for one before authoring a new control. Most are Behavior<T> (attached inside <i:Interaction.Behaviors>); GridViewSortBehavior, WindowChromeBehavior, and BrushModifier are attached-property helpers (applied as behaviors:Foo.Bar="..."). The namespace is also mapped to the canonical Mosaic URI, so mosaic:-prefixed usage works too. See Behaviors.md for full property/usage details.

xmlns:behaviors="clr-namespace:Mosaic.UI.Wpf.Behaviors;assembly=Mosaic.UI.Wpf"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

| Behavior | Attaches to | Description | Details | |---|---|---|---| | FocusBehavior | Control | Focuses the control when it loads | Behaviors.md | | BlinkingBehavior | FrameworkElement | Blinks an element by animating its opacity | Behaviors.md | | FrameworkElementZoomFontSizeOnMouseWheelBehavior | FrameworkElement | Ctrl+MouseWheel font-size zoom (clamped min/max) | Behaviors.md | | BrushModifier | Control/Border/Panel | Lightens/darkens the background brush by an HSL percentage | Behaviors.md | | TextBoxCopyBehavior | Button | Copies a target TextBox's (selected) text to the clipboard on click | Behaviors.md | | TextBoxClearTextOnEscapeBehavior | TextBoxBase | Clears the text box when Escape is pressed | Behaviors.md | | BlockCaretBehavior | TextBox | Terminal-style full-width block caret | Behaviors.md | | ItemsControlAutoScrollBehavior | ItemsControl | Auto-scrolls to the newest item when the collection changes | Behaviors.md | | ItemsControlFilterBehavior | TextBox | Debounced text filter over a target ItemsControl | Behaviors.md | | DataGridFilterBehavior | TextBox | Debounced full-text filter over a target DataGrid | Behaviors.md | | DataGridLastColumnFillBehavior | DataGrid | Stretches the last column to fill remaining width | Behaviors.md | | GridViewLastColumnFillBehavior | ListView | Auto-sizes the last GridView column | Behaviors.md | | GridViewSortBehavior | ListView/GridViewColumn | Click-header sorting for a GridView | Behaviors.md | | ListViewDeleteBehavior | ListView | Deletes selected items on the Delete key (optional confirm) | Behaviors.md | | OpenContextMenuBehavior | ButtonBase | Opens the button's ContextMenu on click | Behaviors.md | | OpenWindowBehavior | ButtonBase/MenuItem | Opens a Window of a given type on click (modal/modeless) | Behaviors.md | | CloseWindowOnEscapeBehavior | Window | Closes the window on Escape | Behaviors.md | | WindowChromeBehavior | Window | Custom borderless chrome, themed brushes, rounded corners | Behaviors.md | | AvalonTextEditorBindingBehavior | AvalonEdit TextEditor | Bindable text, selection, selected text, and caret offset | AvalonEditBehaviors.md | | AvalonEditPropertiesBehavior | AvalonEdit TextEditor | Binds caret brush and hyperlink enablement | AvalonEditBehaviors.md | | AvalonEditVtTerminalBehavior | AvalonEdit TextEditor | Applies a retro VT/CRT visual skin | AvalonEditBehaviors.md | | AvalonEditCopyBehavior | Button | Copies a target TextEditor's (selected) text to the clipboard on click | AvalonEditBehaviors.md |

File name ≠ class name for four behaviors: AvalonEditBindingBehavior.cs → AvalonTextEditorBindingBehavior, TextBoxClearOnEscapeBehavior.cs → TextBoxClearTextOnEscapeBehavior, CloseWindowOnEscape.cs → CloseWindowOnEscapeBehavior, ButtonOpenContextMenu.cs → OpenContextMenuBehavior. Use the class name in XAML.

Integration Packages

These are not main-assembly controls, but are part of the Mosaic usage surface and have demo examples.

| Item | Kind | Namespace / URI | Description | Details | |---|---|---|---|---| | DockingManager / MosaicTheme | Separate package/project | https://github.com/blakepell/MosaicUIWpf | Mosaic-themed AvalonDock fork/integration for IDE-style document and tool-window docking | AvalonDock.md |

Support Controls

These public controls exist for native style dictionaries and low-level template composition. Prefer the higher-level controls in the main inventory unless you are editing Mosaic's native styles or need this exact primitive.

| Control | Base Class | Primary Use | Details | |---|---|---|---| | SliderRepeatButton | RepeatButton | Slider track repeat buttons with corner orientation metadata | SupportControls.md | | SystemDropShadowChrome | Decorator | WPF-style chrome shadow rendering for popups and native templates | SupportControls.md | | WDScrollViewer | ScrollViewer | Native TreeView template scrolling with optional wheel animation | SupportControls.md |


Theme Tokens

Reference theme brushes via DynamicResource using MosaicTheme static keys:

xmlns:themes="http://schemas.apexgate.net/wpf/mosaic-ui"

<!-- Foreground / background -->
Foreground="{DynamicResource {x:Static themes:MosaicTheme.ControlTextForegroundBrush}}"
Background="{DynamicResource {x:Static themes:MosaicTheme.ControlBackgroundBrush}}"

<!-- Border -->
BorderBrush="{DynamicResource {x:Static themes:MosaicTheme.ControlBorderBrush}}"

<!-- Accent / status -->
Fill="{DynamicResource {x:Static themes:MosaicTheme.AccentBrush}}"
Fill="{DynamicResource {x:Static themes:MosaicTheme.SuccessBrush}}"
Fill="{DynamicResource {x:Static themes:MosaicTheme.WarningBrush}}"
Fill="{DynamicResource {x:Static themes:MosaicTheme.ErrorBrush}}"
Fill="{DynamicResource {x:Static themes:MosaicTheme.InfoBrush}}"

<!-- Font sizes -->
FontSize="{DynamicResource {x:Static themes:MosaicTheme.FontSizeSmall}}"
FontSize="{DynamicResource {x:Static themes:MosaicTheme.FontSizeMedium}}"
FontSize="{DynamicResource {x:Static themes:MosaicTheme.FontSizeLarge}}"

App Setup

Consumer apps wire Mosaic by:

  1. Using MosaicApp<TSettings, TViewModel> as the Application base in App.xaml.
  2. Merging a ThemeManager into application resources.
  3. Placing mosaic:WindowTitleBar + WindowChromeBehavior in MainWindow.

See the mosaic-setup-project skill for the full wiring procedure.


Quick Tips

  • Always use DynamicResource for theme tokens — switching themes requires live updates.
  • CustomControls (most controls) support re-templating; UserControl-based controls (ColorPicker, ChatThread, MarkdownEditor, SideMenu, WindowTitleBar) do not.
  • VT52Terminal requires the separate sub-namespace Mosaic.UI.Wpf.Controls.VT52Terminal.
  • InputWaveformVisualizer and LoopbackWaveformVisualizer live in Mosaic.UI.Wpf.Controls.WaveformVisualizer, but are mapped to the canonical Mosaic XAML URI.
  • AvalonDock lives in Mosaic.UI.Wpf.AvalonDock / package MosaicUIWpf.AvalonDock and uses xmlns:ad="https://github.com/blakepell/MosaicUIWpf".
  • AdaptiveImage requires ThemeManager in the DI container (AppServices).
  • PropertyGrid reads [Category], [Description], and [PropertyGridAttribute] attributes on the target object.
  • SideMenu uses ContentTypeIsSingleton + AppServices DI for singleton view navigation in the demo.
  • Public support controls such as WDScrollViewer, SliderRepeatButton, and SystemDropShadowChrome are primarily used by native theme dictionaries; see SupportControls.md.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/mosaic-ui-for-wpf-controls-overview-ms2s7bcs/download' --output '.skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs/SKILL.md.part' && mv '.skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs/SKILL.md.part' '.skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs/SKILL.md' && test -s '.skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/mosaic-controls' && cp -R '.skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs' '.claude/skills/mosaic-controls'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs'

openskills read 'mosaic-ui-for-wpf-controls-overview-ms2s7bcs'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/mosaic-ui-for-wpf-controls-overview-ms2s7bcs/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills