Joufflu WPF Components
A modern WPF component library that makes your desktop apps look good by default.
WPF inputs and reusable components for .NET, built on a design system of themed brushes, dimensions and layout helpers. Every control reads its colours through DynamicResource, so the whole UI re-themes live between Light and Dark β no restart, no flicker.
These pages mirror the controls in the Joufflu.Samples gallery app β same titles, descriptions and code snippets. Each control page lists example markup you can paste into your views.
Using an LLM agent? Point it at the machine-readable
llms.txtindex β a single file linking every pageβs raw Markdown source. Use that raw URL rather than the rendered site, which can return403to automated fetchers.
Highlights
- π Live Light / Dark theming β flip the theme at runtime and every control follows instantly.
- π¨ A real design system β semantic colours, dimensions, sizing and spacing exposed as override-able resource keys.
- π§© Ready-to-use inputs β numeric, decimal and timespan pickers, searchable and tag combo boxes, file and colour pickers, inline-editable text, dropdowns.
- π§ Navigation & overlays β a navigation menu, a view-model-first page container, awaitable modal dialogs and a paging selector.
- ποΈ A file explorer β breadcrumb, folder tree and file list sharing a source, with shell-backed file operations and nodes of your own.
- πͺ Custom-chrome window & natives β a themed application shell plus restyled built-in WPF controls that match out of the box.
- π¦ Modular packages β take just the core styles, or add inputs and navigation only where you need them.
The galleryβs Natives group β WPFβs built-in controls restyled to match the design system (text boxes, combo boxes, data grid, β¦) β is mostly undocumented here; only natives with named style variants are (see Native controls). Otherwise these pages cover the custom controls the library adds.
Sections
| Section | Whatβs inside |
|---|---|
| Native controls | Buttons (solid, soft & outline variants), FontIcon, the Card styles and the typography scale |
| Inputs | NumericUpDown, DecimalUpDown, TimeSpanPicker, FormatTextBox, Search, ComboBoxSearch, ComboBoxTags, TextEditable, FilePicker, ColorPicker, Dropdown |
| Navigation | NavigationMenu, overlays (modal dialogs), Paging, FullContainer |
| Feedback | Badge, Spinner, toasts (Joufflu.Feedback) |
| File explorer | Explorer, ExplorerList, ExplorerTree and their sources (Joufflu.FileExplorer) |
| Toolkit | Sizing, spacing, derived dimensions, tooltips, animation, drag and drop, the design tokens, theme customization, application shell, building a custom input |
Getting started
-
Add the packages you need.
Jouffluis the core (styles & theming);Joufflu.Feedback,Joufflu.FileExplorer,Joufflu.InputsandJoufflu.Navigationare optional and all build on it:dotnet add package Joufflu dotnet add package Joufflu.Feedback # optional: badges, spinner, toasts dotnet add package Joufflu.FileExplorer # optional: file explorer (needs Joufflu.Feedback) dotnet add package Joufflu.Inputs # optional: input controls dotnet add package Joufflu.Navigation # optional: navigation & overlays -
Merge the control styles in
App.xamlso the themed styles and the design-system keys (joufflu:Brushes,joufflu:Dimensions,toolkit:Spacing,toolkit:Sizing) are available:<Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/Joufflu;component/Resources.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> -
Initialize the theme manager once at startup, before the first window shows:
// App.xaml.cs β OnStartup ThemeManager.Instance.Initialize(); -
Use the controls as shown in the pages above.
New to the library? The Tutorial builds a full navigable app shell β side menu, pages, modals and toasts β from scratch.
To explore everything interactively, run the Joufflu.Samples project.