Beep.WPF Controls
The modernized WPF control library that powers Beep.AppStudio, Beep.Wpf.Data.Integrated and the whole Beep WPF stack — native-primitive controls, capability interfaces, 100% XAML templates, chrome via DynamicResource, and per-skin theming.
TheTechIdea.Beep.WPF.Controls ·
XAML namespace:
xmlns:beep="clr-namespace:TheTechIdea.Beep.WPF.Controls;assembly=TheTechIdea.Beep.WPF.Controls"
What this library is
Beep.WPF Controls is a large set of Beep* controls (~90) that each derive the
matching native WPF primitive (Button, TextBox, ComboBox,
ListBox, TreeView, DataGrid, …) and layer on a consistent
chrome, theming and skinning system. It was deliberately re-architected away from a heavy
BaseControl-based WinForms port into a native-primitive base +
capability-interface + XAML-template model.
- No
BaseControl— every control derives its native WPF primitive. - No code-built visual tree — chrome lives in XAML
ControlTemplates. - Chrome via
DynamicResource— colours/paddings/radii come from tokens, never hardcoded. - Skins are the theme — one keyed style per control per design system (Material3, Fluent, Apple, Dracula, …).
Design principles
- Capability interfaces — a control implements only what it needs
(
IBeepThemeable,IBeepIconHost,IBeepValidatable). See Capability Interfaces. - Chrome tokens —
BeepChromeattached properties (ControlStyle,Theme) +DynamicResourcetokens drive the look. See Chrome, Skins & Themes. - Icons by name — set a string DP (
LeadingIcon="fi-tr-search");BeepImageresolves embedded SVG / pack URI / file / path-geometry. See Icons & BeepImage. - Lists use
SimpleItem— every list/menu control exposesListItemsofSimpleItemand renders rows viaBeepListItem. See SimpleItem & List Controls.
Quick start
Reference the namespace and drop a control in. Set ControlStyle once at the window
root — it is an inherited attached property, so every control below re-skins automatically.
<Window xmlns:beep="clr-namespace:TheTechIdea.Beep.WPF.Controls;assembly=TheTechIdea.Beep.WPF.Controls"
beep:BeepChrome.ControlStyle="Dracula">
<StackPanel Margin="16">
<beep:BeepLabel Text="Sign in" FontSize="18"/>
<beep:BeepTextBox PlaceholderText="Email" LeadingIcon="fi-tr-envelope"/>
<beep:BeepPasswordBox PlaceholderText="Password"/>
<beep:BeepButton Text="Continue"/>
</StackPanel>
</Window>
Switch skins app-wide through the single authority:
// TheTechIdea.Beep.WPF.Controls.ThemeManagement
WpfThemesManager.ApplyStyle(BeepControlStyle.Material3);
Documentation map
| Area | Page |
|---|---|
| Control architecture & contract | Control Architecture |
| Chrome tokens, skins, themes, semantic brushes | Chrome, Skins & Themes |
| IBeepThemeable / IBeepIconHost / IBeepValidatable / BeepChrome | Capability Interfaces |
| BeepImage & the icon formats | Icons & BeepImage |
| SimpleItem, ListItems, BeepListItem, draw-mode variants | SimpleItem & List Controls |
| Buttons & toggles | Buttons |
| Text inputs | Text Inputs |
| Selection inputs | Selection Inputs |
| Date & time pickers | Date & Time |
| Lists & collections | Lists & Collections |
| Data controls (grid, tree, navigators) | Data Controls |
| Menus, toolbars, tabs, breadcrumbs | Menus & Navigation |
| Panels, cards, containers, windows | Layout & Containers |
| Progress, badges, notifications, overlays | Feedback & Overlays |
| Stat/feature/project cards & rich widgets | Cards & Widgets |